Compare commits
248 Commits
v2.5.0b1+c
...
v2.7.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cc134c36e2 | ||
|
|
17313bd67b | ||
|
|
b831dfbc7f | ||
|
|
b739b791d4 | ||
|
|
0480673460 | ||
|
|
7ffced2151 | ||
|
|
3297ef8975 | ||
|
|
acba971e70 | ||
|
|
dd8169adb4 | ||
|
|
857a625ae2 | ||
|
|
ac3a7386aa | ||
|
|
3eed5bfc64 | ||
|
|
d0992ed56f | ||
|
|
af37ec21e9 | ||
|
|
51ef3ec758 | ||
|
|
f66da9870e | ||
|
|
ca46984a6b | ||
|
|
fe063cf19a | ||
|
|
3bdb12cc5d | ||
|
|
6819dc87a6 | ||
|
|
2ba6c4bc08 | ||
|
|
bb548b796a | ||
|
|
6f8fca7525 | ||
|
|
453536cf14 | ||
|
|
080d94e299 | ||
|
|
ae23fba6b7 | ||
|
|
b8f53f9bb3 | ||
|
|
e143a79b06 | ||
|
|
fa7c93d99a | ||
|
|
f48ce43c0c | ||
|
|
ba12d97c1d | ||
|
|
03e8b8522b | ||
|
|
7a8baac5bd | ||
|
|
58ceff6144 | ||
|
|
7bc82e229f | ||
|
|
74ebd3415c | ||
|
|
de752cbe0a | ||
|
|
25c5abffee | ||
|
|
ec1a2035cd | ||
|
|
b3fbc080db | ||
|
|
f289a72121 | ||
|
|
e6b2d15468 | ||
|
|
e76dc2e92b | ||
|
|
10572c7dbd | ||
|
|
e83e081548 | ||
|
|
85a834d1a3 | ||
|
|
46c95d722c | ||
|
|
70831bb5e4 | ||
|
|
12227cd016 | ||
|
|
2749426a7c | ||
|
|
0a23c3cabb | ||
|
|
5a0670838d | ||
|
|
2dfdead656 | ||
|
|
5fdae11bb1 | ||
|
|
c991562662 | ||
|
|
b4eb6e7fc3 | ||
|
|
d4e8ac761e | ||
|
|
30ff2e0dae | ||
|
|
4f0f8fcdfc | ||
|
|
a1c3d26b73 | ||
|
|
aa3043b0ca | ||
|
|
2d9dcc624c | ||
|
|
aa80a4812d | ||
|
|
5b03d01d32 | ||
|
|
3228c7f74d | ||
|
|
5b60abf4b6 | ||
|
|
47a97772cf | ||
|
|
f4123310ae | ||
|
|
f05439989d | ||
|
|
1df7c0aff8 | ||
|
|
29fde786fb | ||
|
|
3f0fc3c44b | ||
|
|
375e8de33f | ||
|
|
9d04f06f69 | ||
|
|
0297ec47f6 | ||
|
|
75e1e48ba8 | ||
|
|
d404d10bfe | ||
|
|
194c159379 | ||
|
|
791b6e15d4 | ||
|
|
882e39417d | ||
|
|
8b6d32fe3b | ||
|
|
715f9427d5 | ||
|
|
78b281cf3a | ||
|
|
bbede00cc4 | ||
|
|
e6da57ab57 | ||
|
|
9e08783802 | ||
|
|
1dc98ce33d | ||
|
|
c97750a593 | ||
|
|
aa7e3bd69d | ||
|
|
5a6b9114e2 | ||
|
|
61abcf3018 | ||
|
|
4845b3b0ce | ||
|
|
8f0e8f72cd | ||
|
|
96269a7777 | ||
|
|
bdcc05b7b6 | ||
|
|
060b512bcf | ||
|
|
3907c8c29a | ||
|
|
c786012b28 | ||
|
|
37a084e1d1 | ||
|
|
b9c3675894 | ||
|
|
60ecc95049 | ||
|
|
59d9d47a56 | ||
|
|
c619efa68e | ||
|
|
05e895e7b7 | ||
|
|
58daf2a543 | ||
|
|
0294684bb8 | ||
|
|
fa9b3be41c | ||
|
|
74bf3fbc8b | ||
|
|
dc2a4d4446 | ||
|
|
b0895611d6 | ||
|
|
f664a1cad3 | ||
|
|
19de7e40dc | ||
|
|
de2ee1dce6 | ||
|
|
90698dde90 | ||
|
|
0ab6d6e845 | ||
|
|
74d87845cf | ||
|
|
9e2b15776f | ||
|
|
c8ade0741c | ||
|
|
af8b444ab5 | ||
|
|
2ba26f01b2 | ||
|
|
e77bb11d0a | ||
|
|
c14b56f37d | ||
|
|
e6fe8de5ed | ||
|
|
cf27c2be10 | ||
|
|
f39ba27a13 | ||
|
|
78ff74f0f7 | ||
|
|
29a2a08986 | ||
|
|
881b92a6ea | ||
|
|
50c22c836b | ||
|
|
63115a7c0f | ||
|
|
f854627888 | ||
|
|
5ec8468d3f | ||
|
|
0da4e4359b | ||
|
|
c5e8742838 | ||
|
|
f9f90852c5 | ||
|
|
6b5f2450ad | ||
|
|
4f2e962a46 | ||
|
|
05ce8fbf1c | ||
|
|
929b2dfb38 | ||
|
|
659e0e5ead | ||
|
|
7bb44f6473 | ||
|
|
60f024fdb7 | ||
|
|
da601c9a63 | ||
|
|
7464de06b1 | ||
|
|
20fbda9e7a | ||
|
|
15bbf69fcf | ||
|
|
677a9b33c5 | ||
|
|
e9efdcd4e8 | ||
|
|
c3b0b7d1e1 | ||
|
|
d46a2d61bb | ||
|
|
673a2e25e3 | ||
|
|
749adb9ec8 | ||
|
|
5cab8b1070 | ||
|
|
00637f84cb | ||
|
|
bc5a43bfb3 | ||
|
|
723ef5c48d | ||
|
|
53c1a77aeb | ||
|
|
e5389d44d9 | ||
|
|
54b2e5b5fb | ||
|
|
1276016a98 | ||
|
|
c54d0dc5ff | ||
|
|
fc0bfd83b2 | ||
|
|
42620c842e | ||
|
|
fd3b3f98bf | ||
|
|
fd7c5c1580 | ||
|
|
c0922adfb2 | ||
|
|
1454cd8a0d | ||
|
|
3e249ec155 | ||
|
|
edfbf71958 | ||
|
|
4876ff7035 | ||
|
|
d5034c9e0d | ||
|
|
9ec54c9004 | ||
|
|
0749e03211 | ||
|
|
e03adad23a | ||
|
|
9b3ba8c9aa | ||
|
|
85746cd681 | ||
|
|
2e64280403 | ||
|
|
d7b81ea87d | ||
|
|
f4404e2649 | ||
|
|
f598e8e3c2 | ||
|
|
27488a0260 | ||
|
|
c53e7964bf | ||
|
|
3516d6fdc5 | ||
|
|
69af1440ae | ||
|
|
31c3101d6d | ||
|
|
5850026aa9 | ||
|
|
b4b8a158f5 | ||
|
|
5c6303995d | ||
|
|
f0353a7dd7 | ||
|
|
1fb19e3b94 | ||
|
|
1788b32b83 | ||
|
|
621672bf34 | ||
|
|
b08406b7d6 | ||
|
|
6211d1de70 | ||
|
|
916b11deb8 | ||
|
|
8e41a90f57 | ||
|
|
9aa2b17ae6 | ||
|
|
7f02a078fd | ||
|
|
07b6c9c437 | ||
|
|
7c7650ac07 | ||
|
|
4e399f9bbb | ||
|
|
12b11d57ba | ||
|
|
bea7102a3f | ||
|
|
b77a577c06 | ||
|
|
c5aab07d65 | ||
|
|
362ae72183 | ||
|
|
6f5d0453a6 | ||
|
|
c552f6a1d4 | ||
|
|
99a8b03697 | ||
|
|
9d63946aa7 | ||
|
|
6eba2b1abd | ||
|
|
b05f1573c6 | ||
|
|
f4311d1cef | ||
|
|
8abad416bd | ||
|
|
52dbd8d9ef | ||
|
|
4e5a70993e | ||
|
|
dd0fbfddb9 | ||
|
|
02e35181d5 | ||
|
|
302cab54fd | ||
|
|
ba157af496 | ||
|
|
d1e6647d1f | ||
|
|
0a47fba107 | ||
|
|
3faa57f39a | ||
|
|
75333264a7 | ||
|
|
e7d846063d | ||
|
|
c2b7cc00dd | ||
|
|
a107171543 | ||
|
|
79be16114d | ||
|
|
c530660132 | ||
|
|
ebe0efac81 | ||
|
|
18ee37d8fd | ||
|
|
f2c2e2e65a | ||
|
|
93f1a18b37 | ||
|
|
44aed364b7 | ||
|
|
eb8fa2f259 | ||
|
|
a8c69abc72 | ||
|
|
2dd1ddddd5 | ||
|
|
4a27c60486 | ||
|
|
66d559306f | ||
|
|
83222489c4 | ||
|
|
0a2fa62e21 | ||
|
|
6240f23c02 | ||
|
|
97ef231711 | ||
|
|
82d8c95d2f | ||
|
|
dde5ee3701 | ||
|
|
44a3cb3b2e | ||
|
|
44c58abe81 | ||
|
|
180b766b59 |
@@ -10,9 +10,9 @@ environment:
|
||||
|
||||
# Python 2.7.10 is the latest version and is not pre-installed.
|
||||
|
||||
- PYTHON: "C:\\Python27.10"
|
||||
PYTHON_VERSION: "2.7.10"
|
||||
PYTHON_ARCH: "32"
|
||||
# - PYTHON: "C:\\Python27.10"
|
||||
# PYTHON_VERSION: "2.7.10"
|
||||
# PYTHON_ARCH: "32"
|
||||
|
||||
#- PYTHON: "C:\\Python27.10-x64"
|
||||
# PYTHON_VERSION: "2.7.10"
|
||||
@@ -59,9 +59,9 @@ environment:
|
||||
# PYTHON_VERSION: "2.6.6"
|
||||
# PYTHON_ARCH: "64"
|
||||
|
||||
#- PYTHON: "C:\\Python35"
|
||||
# PYTHON_VERSION: "3.5.0"
|
||||
# PYTHON_ARCH: "32"
|
||||
- PYTHON: "C:\\Python36"
|
||||
PYTHON_VERSION: "3.6.x"
|
||||
PYTHON_ARCH: "32"
|
||||
|
||||
#- PYTHON: "C:\\Python35-x64"
|
||||
# PYTHON_VERSION: "3.5.0"
|
||||
@@ -89,20 +89,23 @@ install:
|
||||
Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { `
|
||||
throw "There are newer queued builds for this pull request, failing early." }
|
||||
|
||||
# Install wxPython
|
||||
- 'ECHO Downloading wxPython.'
|
||||
- "appveyor DownloadFile https://goo.gl/yvO8PB -FileName C:\\wxpython.exe"
|
||||
#- "appveyor DownloadFile https://goo.gl/Uj0jV3 -FileName C:\\wxpython64.exe"
|
||||
|
||||
- 'ECHO Install wxPython'
|
||||
- "C:\\wxpython.exe /SP- /VERYSILENT /NORESTART"
|
||||
#- "C:\\wxpython64.exe /SP- /VERYSILENT /NORESTART"
|
||||
# # Install wxPython
|
||||
# - 'ECHO Downloading wxPython.'
|
||||
# - "appveyor DownloadFile https://goo.gl/yvO8PB -FileName C:\\wxpython.exe"
|
||||
# #- "appveyor DownloadFile https://goo.gl/Uj0jV3 -FileName C:\\wxpython64.exe"
|
||||
#
|
||||
# - 'ECHO Install wxPython'
|
||||
# - "C:\\wxpython.exe /SP- /VERYSILENT /NORESTART"
|
||||
# #- "C:\\wxpython64.exe /SP- /VERYSILENT /NORESTART"
|
||||
|
||||
- ECHO "Filesystem root:"
|
||||
- ps: "ls \"C:/\""
|
||||
|
||||
- ECHO "Filesystem projects root:"
|
||||
- ps: "ls \"C:\\projects\\\""
|
||||
|
||||
- ECHO "Filesystem pyfa root:"
|
||||
- ps: "ls \"C:\\projects\\pyfa\\\""
|
||||
- ps: "ls \"C:\\projects\\$env:APPVEYOR_PROJECT_SLUG\""
|
||||
|
||||
- ECHO "Installed SDKs:"
|
||||
- ps: "ls \"C:/Program Files/Microsoft SDKs/Windows\""
|
||||
@@ -131,15 +134,17 @@ install:
|
||||
# C:\\projects\\eve-gnosis\\
|
||||
- ECHO "Install pip requirements:"
|
||||
- "pip install -r requirements.txt"
|
||||
- "pip install -r requirements_test.txt"
|
||||
- "pip install -r requirements_build_windows.txt"
|
||||
- "pip install PyInstaller"
|
||||
# - "pip install -r requirements_test.txt"
|
||||
# - "pip install -r requirements_build_windows.txt"
|
||||
|
||||
build_script:
|
||||
# Build the compiled extension
|
||||
# - "python setup.py build"
|
||||
- ECHO "Build pyfa:"
|
||||
#- copy C:\projects\pyfa\dist_assets\win\pyfa.spec C:\projects\pyfa\pyfa.spec
|
||||
- "python C:\\projects\\pyfa\\setup.py build"
|
||||
- ps: cd C:\projects\$env:APPVEYOR_PROJECT_SLUG
|
||||
- "python -m PyInstaller --noupx --clean --windowed --noconsole -m ./dist_assets/win/pyfa.exe.manifest -y ./dist_assets/win/pyfa.spec"
|
||||
|
||||
#- ECHO "Build pyfa (Debug):"
|
||||
#- copy C:\projects\pyfa\dist_assets\win\pyfa_debug.spec C:\projects\pyfa\pyfa_debug.spec
|
||||
@@ -150,12 +155,12 @@ build: on
|
||||
after_build:
|
||||
- ps: "ls \"./\""
|
||||
#- ps: "ls \"C:\\projects\\pyfa\\build\\pyfa\\\""
|
||||
- ps: "ls \"C:\\projects\\pyfa\\build\\\""
|
||||
- ps: "ls \"C:\\projects\\pyfa\\build\\exe.win32-2.7\\\""
|
||||
- ps: "ls \"C:\\projects\\$env:APPVEYOR_PROJECT_SLUG\\dist\\\""
|
||||
# - ps: "ls \"C:\\projects\\$env:APPVEYOR_PROJECT_SLUG\\build\\exe.win32-2.7\\\""
|
||||
# Zip
|
||||
# APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER
|
||||
#- 7z a build.zip -r C:\projects\pyfa\build\pyfa\*.*
|
||||
- 7z a pyfa.zip -r C:\projects\pyfa\build\exe.win32-2.7\*.*
|
||||
- ps: 7z a pyfa.zip -r C:\projects\$env:APPVEYOR_PROJECT_SLUG\dist\pyfa\*.*
|
||||
#- 7z a pyfa_debug.zip -r C:\projects\pyfa\dist\pyfa_debug\*.*
|
||||
|
||||
on_success:
|
||||
|
||||
@@ -100,8 +100,8 @@ def DBInMemory():
|
||||
import eos.db
|
||||
|
||||
# Output debug info to help us troubleshoot Travis
|
||||
print((eos.db.saveddata_engine))
|
||||
print((eos.db.gamedata_engine))
|
||||
print(eos.db.saveddata_engine)
|
||||
print(eos.db.gamedata_engine)
|
||||
|
||||
helper = {
|
||||
'config': eos.config,
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import pytest
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
from _development.helpers import DBInMemory as DB, Gamedata, Saveddata
|
||||
|
||||
|
||||
# noinspection PyShadowingNames
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import pytest
|
||||
|
||||
# noinspection PyPackageRequirements
|
||||
from _development.helpers import DBInMemory as DB, Gamedata, Saveddata
|
||||
|
||||
|
||||
# noinspection PyShadowingNames
|
||||
|
||||
@@ -24,9 +24,9 @@ saveInRoot = False
|
||||
|
||||
# Version data
|
||||
|
||||
version = "2.5.0b1"
|
||||
version = "2.7.0"
|
||||
tag = "Stable"
|
||||
expansionName = "YC120.8"
|
||||
expansionName = "December"
|
||||
expansionVersion = "1.0"
|
||||
evemonMinVersion = "4081"
|
||||
|
||||
@@ -230,7 +230,6 @@ def defLogging():
|
||||
])
|
||||
|
||||
|
||||
|
||||
class LoggerWriter(object):
|
||||
def __init__(self, level):
|
||||
# self.level is really like using log.debug(message)
|
||||
|
||||
@@ -38,7 +38,7 @@ call([
|
||||
iscc,
|
||||
os.path.join(os.getcwd(), "dist_assets", "win", "pyfa-setup.iss"),
|
||||
"/dMyAppVersion=%s" % (config['version']),
|
||||
"/dMyAppExpansion=%s" % (expansion),
|
||||
"/dMyAppExpansion=%s" % expansion,
|
||||
"/dMyAppDir=%s" % source,
|
||||
"/dMyOutputDir=%s" % os.path.join(os.getcwd(), "dist"),
|
||||
"/dMyOutputFile=%s" % fileName]) # stdout=devnull, stderr=devnull
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
# ===============================================================================
|
||||
|
||||
from sqlalchemy import Column, String, Integer, ForeignKey, Boolean, Table
|
||||
from sqlalchemy.orm import relation, mapper, synonym, deferred
|
||||
from sqlalchemy import Boolean, Column, Integer, String, Table
|
||||
from sqlalchemy.orm import deferred, mapper, synonym
|
||||
|
||||
from eos.db import gamedata_meta
|
||||
from eos.gamedata import Category
|
||||
|
||||
@@ -17,15 +17,15 @@
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
# ===============================================================================
|
||||
|
||||
from sqlalchemy import Column, String, Integer, Boolean, ForeignKey, Table, Float
|
||||
from sqlalchemy import Boolean, Column, Float, ForeignKey, Integer, String, Table
|
||||
from sqlalchemy.ext.associationproxy import association_proxy
|
||||
from sqlalchemy.orm import relation, mapper, synonym, deferred, backref
|
||||
from sqlalchemy.orm import backref, deferred, mapper, relation, synonym
|
||||
from sqlalchemy.orm.collections import attribute_mapped_collection
|
||||
from eos.db.gamedata.effect import typeeffects_table
|
||||
|
||||
from eos.db import gamedata_meta
|
||||
from eos.gamedata import Attribute, Effect, Group, Item, MetaType, Traits, DynamicItemItem, DynamicItem
|
||||
from eos.db.gamedata.dynamicAttributes import dynamicApplicable_table, dynamic_table
|
||||
from eos.db.gamedata.dynamicAttributes import dynamicApplicable_table
|
||||
from eos.db.gamedata.effect import typeeffects_table
|
||||
from eos.gamedata import Attribute, DynamicItem, Effect, Group, Item, MetaType, Traits
|
||||
|
||||
items_table = Table("invtypes", gamedata_meta,
|
||||
Column("typeID", Integer, primary_key=True),
|
||||
|
||||
@@ -17,16 +17,16 @@
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
# ===============================================================================
|
||||
|
||||
from sqlalchemy.orm import join, exc, aliased, joinedload, subqueryload
|
||||
from sqlalchemy.sql import and_, or_, select
|
||||
from sqlalchemy.inspection import inspect
|
||||
from sqlalchemy.orm import aliased, exc, join
|
||||
from sqlalchemy.sql import and_, or_, select
|
||||
|
||||
import eos.config
|
||||
from eos.db import gamedata_session
|
||||
from eos.db.gamedata.metaGroup import metatypes_table, items_table
|
||||
from eos.db.gamedata.group import groups_table
|
||||
from eos.db.gamedata.metaGroup import items_table, metatypes_table
|
||||
from eos.db.util import processEager, processWhere
|
||||
from eos.gamedata import AlphaClone, Attribute, Category, Group, Item, MarketGroup, MetaGroup, AttributeInfo, MetaData, DynamicItem
|
||||
from eos.gamedata import AlphaClone, Attribute, AttributeInfo, Category, DynamicItem, Group, Item, MarketGroup, MetaData, MetaGroup
|
||||
|
||||
cache = {}
|
||||
configVal = getattr(eos.config, "gamedataCache", None)
|
||||
@@ -396,6 +396,21 @@ def getAbyssalTypes():
|
||||
return set([r.resultingTypeID for r in gamedata_session.query(DynamicItem.resultingTypeID).distinct()])
|
||||
|
||||
|
||||
@cachedQuery(1, "itemID")
|
||||
def getDynamicItem(itemID, eager=None):
|
||||
try:
|
||||
if isinstance(itemID, int):
|
||||
if eager is None:
|
||||
result = gamedata_session.query(DynamicItem).filter(DynamicItem.ID == itemID).one()
|
||||
else:
|
||||
result = gamedata_session.query(DynamicItem).options(*processEager(eager)).filter(DynamicItem.ID == itemID).one()
|
||||
else:
|
||||
raise TypeError("Need integer as argument")
|
||||
except exc.NoResultFound:
|
||||
result = None
|
||||
return result
|
||||
|
||||
|
||||
def getRequiredFor(itemID, attrMapping):
|
||||
Attribute1 = aliased(Attribute)
|
||||
Attribute2 = aliased(Attribute)
|
||||
|
||||
18
eos/db/migrations/upgrade29.py
Normal file
18
eos/db/migrations/upgrade29.py
Normal file
@@ -0,0 +1,18 @@
|
||||
"""
|
||||
Migration 29
|
||||
|
||||
- adds spoolType and spoolAmount to modules table
|
||||
"""
|
||||
import sqlalchemy
|
||||
|
||||
|
||||
def upgrade(saveddata_engine):
|
||||
try:
|
||||
saveddata_engine.execute("SELECT spoolType FROM modules LIMIT 1")
|
||||
except sqlalchemy.exc.DatabaseError:
|
||||
saveddata_engine.execute("ALTER TABLE modules ADD COLUMN spoolType INT;")
|
||||
|
||||
try:
|
||||
saveddata_engine.execute("SELECT spoolAmount FROM modules LIMIT 1")
|
||||
except sqlalchemy.exc.DatabaseError:
|
||||
saveddata_engine.execute("ALTER TABLE modules ADD COLUMN spoolAmount FLOAT;")
|
||||
@@ -17,33 +17,32 @@
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
# ===============================================================================
|
||||
|
||||
from sqlalchemy.ext.associationproxy import association_proxy
|
||||
from sqlalchemy.orm.collections import attribute_mapped_collection
|
||||
from sqlalchemy.sql import and_
|
||||
from sqlalchemy.orm import relation, reconstructor, mapper, relationship
|
||||
from sqlalchemy import ForeignKey, Column, Integer, String, Table, Boolean, DateTime
|
||||
import datetime
|
||||
|
||||
from eos.db import saveddata_meta
|
||||
from eos.db import saveddata_session
|
||||
from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, String, Table
|
||||
from sqlalchemy.ext.associationproxy import association_proxy
|
||||
from sqlalchemy.orm import mapper, reconstructor, relation, relationship
|
||||
from sqlalchemy.orm.collections import attribute_mapped_collection
|
||||
from sqlalchemy.sql import and_
|
||||
|
||||
from eos.db import saveddata_meta, saveddata_session
|
||||
from eos.db.saveddata.cargo import cargo_table
|
||||
from eos.db.saveddata.drone import drones_table
|
||||
from eos.db.saveddata.fighter import fighters_table
|
||||
from eos.db.saveddata.implant import fitImplants_table
|
||||
from eos.db.saveddata.module import modules_table
|
||||
from eos.effectHandlerHelpers import HandledModuleList, HandledImplantBoosterList, HandledProjectedModList, \
|
||||
HandledDroneCargoList, HandledProjectedDroneList
|
||||
from eos.saveddata.implant import Implant
|
||||
from eos.saveddata.character import Character
|
||||
from eos.saveddata.user import User
|
||||
from eos.saveddata.fighter import Fighter
|
||||
from eos.saveddata.fit import Fit as es_Fit, ImplantLocation
|
||||
from eos.saveddata.drone import Drone
|
||||
from eos.effectHandlerHelpers import HandledDroneCargoList, HandledImplantBoosterList, HandledModuleList, HandledProjectedDroneList, HandledProjectedModList
|
||||
from eos.saveddata.booster import Booster
|
||||
from eos.saveddata.module import Module
|
||||
from eos.saveddata.cargo import Cargo
|
||||
from eos.saveddata.character import Character
|
||||
from eos.saveddata.damagePattern import DamagePattern
|
||||
from eos.saveddata.drone import Drone
|
||||
from eos.saveddata.fighter import Fighter
|
||||
from eos.saveddata.fit import Fit as es_Fit
|
||||
from eos.saveddata.implant import Implant
|
||||
from eos.saveddata.module import Module
|
||||
from eos.saveddata.targetResists import TargetResists
|
||||
from eos.saveddata.user import User
|
||||
|
||||
fits_table = Table("fits", saveddata_meta,
|
||||
Column("ID", Integer, primary_key=True),
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
# ===============================================================================
|
||||
|
||||
from sqlalchemy import Table, Column, Integer, ForeignKey, CheckConstraint, Boolean, DateTime
|
||||
from sqlalchemy import Table, Column, Integer, Float, ForeignKey, CheckConstraint, Boolean, DateTime
|
||||
from sqlalchemy.orm.collections import attribute_mapped_collection
|
||||
from sqlalchemy.orm import relation, mapper
|
||||
import datetime
|
||||
@@ -40,6 +40,8 @@ modules_table = Table("modules", saveddata_meta,
|
||||
Column("position", Integer),
|
||||
Column("created", DateTime, nullable=True, default=datetime.datetime.now),
|
||||
Column("modified", DateTime, nullable=True, onupdate=datetime.datetime.now),
|
||||
Column("spoolType", Integer, nullable=True),
|
||||
Column("spoolAmount", Float, nullable=True),
|
||||
CheckConstraint('("dummySlot" = NULL OR "itemID" = NULL) AND "dummySlot" != "itemID"'))
|
||||
|
||||
mapper(Module, modules_table,
|
||||
|
||||
@@ -17,10 +17,11 @@
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
# ===============================================================================
|
||||
|
||||
from sqlalchemy import Table, Column, Integer, ForeignKey, Boolean, DateTime, Float
|
||||
from sqlalchemy.orm import mapper
|
||||
import datetime
|
||||
|
||||
from sqlalchemy import Column, DateTime, Float, ForeignKey, Integer, Table
|
||||
from sqlalchemy.orm import mapper
|
||||
|
||||
from eos.db import saveddata_meta
|
||||
from eos.saveddata.mutator import Mutator
|
||||
|
||||
|
||||
@@ -114,6 +114,7 @@ class HandledList(list):
|
||||
|
||||
|
||||
class HandledModuleList(HandledList):
|
||||
|
||||
def append(self, mod):
|
||||
emptyPosition = float("Inf")
|
||||
for i in range(len(self)):
|
||||
@@ -131,12 +132,32 @@ class HandledModuleList(HandledList):
|
||||
self.remove(mod)
|
||||
return
|
||||
|
||||
self.appendIgnoreEmpty(mod)
|
||||
|
||||
def appendIgnoreEmpty(self, mod):
|
||||
mod.position = len(self)
|
||||
HandledList.append(self, mod)
|
||||
if mod.isInvalid:
|
||||
self.remove(mod)
|
||||
return
|
||||
|
||||
def replaceRackPosition(self, rackPosition, mod):
|
||||
listPositions = []
|
||||
for currMod in self:
|
||||
if currMod.slot == mod.slot:
|
||||
listPositions.append(currMod.position)
|
||||
listPositions.sort()
|
||||
try:
|
||||
modListPosition = listPositions[rackPosition]
|
||||
except IndexError:
|
||||
self.appendIgnoreEmpty(mod)
|
||||
else:
|
||||
self.toDummy(modListPosition)
|
||||
if not mod.isEmpty:
|
||||
self.toModule(modListPosition, mod)
|
||||
if mod.isInvalid:
|
||||
self.toDummy(modListPosition)
|
||||
|
||||
def insert(self, index, mod):
|
||||
mod.position = index
|
||||
i = index
|
||||
@@ -233,20 +254,23 @@ class HandledProjectedModList(HandledList):
|
||||
return
|
||||
|
||||
proj.projected = True
|
||||
isSystemEffect = proj.item.group.name == "Effect Beacon"
|
||||
|
||||
if isSystemEffect:
|
||||
if proj.isExclusiveSystemEffect:
|
||||
self.makeRoom(proj)
|
||||
|
||||
HandledList.append(self, proj)
|
||||
|
||||
# Remove non-projectable modules
|
||||
if not proj.item.isType("projected") and not isSystemEffect:
|
||||
if not proj.item.isType("projected") and not proj.isExclusiveSystemEffect:
|
||||
self.remove(proj)
|
||||
|
||||
@property
|
||||
def currentSystemEffect(self):
|
||||
return next((m for m in self if m.isExclusiveSystemEffect), None)
|
||||
|
||||
def makeRoom(self, proj):
|
||||
# remove other system effects - only 1 per fit plz
|
||||
oldEffect = next((m for m in self if m.item.group.name == "Effect Beacon"), None)
|
||||
oldEffect = self.currentSystemEffect
|
||||
|
||||
if oldEffect:
|
||||
pyfalog.info("System effect occupied with {0}, replacing with {1}", oldEffect.item.name, proj.item.name)
|
||||
@@ -254,6 +278,7 @@ class HandledProjectedModList(HandledList):
|
||||
return oldEffect.itemID
|
||||
return None
|
||||
|
||||
|
||||
class HandledProjectedDroneList(HandledDroneCargoList):
|
||||
def append(self, proj):
|
||||
proj.projected = True
|
||||
|
||||
@@ -9,4 +9,7 @@ type = "active"
|
||||
def handler(fit, module, context):
|
||||
amount = module.getModifiedItemAttr("armorDamageAmount")
|
||||
speed = module.getModifiedItemAttr("duration") / 1000.0
|
||||
fit.extraAttributes.increase("armorRepair", amount / speed)
|
||||
rps = amount / speed
|
||||
fit.extraAttributes.increase("armorRepair", rps)
|
||||
fit.extraAttributes.increase("armorRepairPreSpool", rps)
|
||||
fit.extraAttributes.increase("armorRepairFullSpool", rps)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# boosterArmorHpPenalty
|
||||
#
|
||||
# Used by:
|
||||
# Implants named like: Booster (12 of 33)
|
||||
# Implants named like: Booster (12 of 35)
|
||||
type = "boosterSideEffect"
|
||||
|
||||
# User-friendly name for the side effect
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
# Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2)
|
||||
# Implants named like: grade Edge (10 of 12)
|
||||
# Skill: Neurotoxin Control
|
||||
runTime = 'early'
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# boosterShieldCapacityPenalty
|
||||
#
|
||||
# Used by:
|
||||
# Implants from group: Booster (12 of 65)
|
||||
# Implants from group: Booster (12 of 71)
|
||||
type = "boosterSideEffect"
|
||||
|
||||
# User-friendly name for the side effect
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Carrier (4 of 4)
|
||||
# Ships from group: Combat Battlecruiser (13 of 13)
|
||||
# Ships from group: Combat Battlecruiser (14 of 14)
|
||||
# Ships from group: Command Ship (8 of 8)
|
||||
# Ships from group: Force Auxiliary (6 of 6)
|
||||
# Ships from group: Supercarrier (6 of 6)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Used by:
|
||||
# Modules from group: Frequency Mining Laser (3 of 3)
|
||||
type = "passive"
|
||||
|
||||
runTime = "late"
|
||||
|
||||
def handler(fit, module, context):
|
||||
module.preAssignItemAttr("specialtyMiningAmount", module.getModifiedItemAttr("miningAmount"))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# disintegratorWeaponDamageMultiply
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Entropic Radiation Sink (3 of 3)
|
||||
# Modules from group: Entropic Radiation Sink (4 of 4)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# disintegratorWeaponSpeedMultiply
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Entropic Radiation Sink (3 of 3)
|
||||
# Modules from group: Entropic Radiation Sink (4 of 4)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# doHacking
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Data Miners (9 of 9)
|
||||
# Modules from group: Data Miners (10 of 10)
|
||||
type = "active"
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# droneArmorDamageBonusEffect
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Logistics (5 of 6)
|
||||
# Ships from group: Logistics (6 of 7)
|
||||
# Ship: Exequror
|
||||
# Ship: Scythe
|
||||
type = "passive"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# droneHullRepairBonusEffect
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Logistics (5 of 6)
|
||||
# Ships from group: Logistics (6 of 7)
|
||||
# Ship: Exequror
|
||||
# Ship: Scythe
|
||||
type = "passive"
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules named like: Drone Speed Augmentor (6 of 8)
|
||||
# Implant: Overmind 'Goliath' Drone Tuner T25-10S
|
||||
# Implant: Overmind 'Hawkmoth' Drone Tuner S10-25T
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# droneShieldBonusBonusEffect
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Logistics (5 of 6)
|
||||
# Ships from group: Logistics (6 of 7)
|
||||
# Ship: Exequror
|
||||
# Ship: Scythe
|
||||
type = "passive"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# eliteBonusMaxDmgMultiBonusAdd
|
||||
# eliteBonusCovertOps3PCTdamagePerCycle
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Hydra
|
||||
@@ -6,5 +6,5 @@ type = "passive"
|
||||
|
||||
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill("Small Precursor Weapon"), "damageMultiplierBonusMax",
|
||||
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill("Small Precursor Weapon"), "damageMultiplierBonusPerCycle",
|
||||
src.getModifiedItemAttr("eliteBonusCovertOps3"), skill="Covert Ops")
|
||||
@@ -1,4 +1,4 @@
|
||||
# eliteBonusReconMaxDmgMultiMaxHPT
|
||||
# eliteBonusReconShip3PCTdamagePerCycle
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Tiamat
|
||||
@@ -6,5 +6,5 @@ type = "passive"
|
||||
|
||||
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill("Medium Precursor Weapon"), "damageMultiplierBonusMax",
|
||||
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill("Medium Precursor Weapon"), "damageMultiplierBonusPerCycle",
|
||||
src.getModifiedItemAttr("eliteBonusReconShip3"), skill="Recon Ships")
|
||||
11
eos/effects/emergencyhullenergizer.py
Normal file
11
eos/effects/emergencyhullenergizer.py
Normal file
@@ -0,0 +1,11 @@
|
||||
# emergencyHullEnergizer
|
||||
#
|
||||
# Used by:
|
||||
# Variations of module: Capital Emergency Hull Energizer I (5 of 5)
|
||||
type = "active"
|
||||
runtime = "late"
|
||||
|
||||
|
||||
def handler(fit, src, context):
|
||||
for dmgType in ('em', 'thermal', 'kinetic', 'explosive'):
|
||||
fit.ship.forceItemAttr('{}DamageResonance'.format(dmgType), src.getModifiedItemAttr("hull{}DamageResonance".format(dmgType.title())))
|
||||
@@ -1,7 +1,7 @@
|
||||
# energyWeaponDamageMultiply
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Heat Sink (18 of 18)
|
||||
# Modules from group: Heat Sink (19 of 19)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# energyWeaponSpeedMultiply
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Heat Sink (18 of 18)
|
||||
# Modules from group: Heat Sink (19 of 19)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -7,3 +7,9 @@ type = "active"
|
||||
|
||||
def handler(fit, module, context):
|
||||
fit.ship.forceItemAttr("disallowAssistance", module.getModifiedItemAttr("disallowAssistance"))
|
||||
for scanType in ("Gravimetric", "Magnetometric", "Radar", "Ladar"):
|
||||
fit.ship.boostItemAttr(
|
||||
"scan{}Strength".format(scanType),
|
||||
module.getModifiedItemAttr("scan{}StrengthPercent".format(scanType)),
|
||||
stackingPenalties=True
|
||||
)
|
||||
|
||||
@@ -14,4 +14,7 @@ def handler(fit, module, context):
|
||||
|
||||
amount = module.getModifiedItemAttr("armorDamageAmount") * multiplier
|
||||
speed = module.getModifiedItemAttr("duration") / 1000.0
|
||||
fit.extraAttributes.increase("armorRepair", amount / speed)
|
||||
rps = amount / speed
|
||||
fit.extraAttributes.increase("armorRepair", rps)
|
||||
fit.extraAttributes.increase("armorRepairPreSpool", rps)
|
||||
fit.extraAttributes.increase("armorRepairFullSpool", rps)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# hybridWeaponDamageMultiply
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Magnetic Field Stabilizer (14 of 14)
|
||||
# Modules from group: Magnetic Field Stabilizer (15 of 15)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# hybridWeaponSpeedMultiply
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Magnetic Field Stabilizer (14 of 14)
|
||||
# Modules from group: Magnetic Field Stabilizer (15 of 15)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#
|
||||
# Used by:
|
||||
# Variations of module: Ice Harvester Upgrade I (5 of 5)
|
||||
# Module: Frostline 'Omnivore' Harvester Upgrade
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
17
eos/effects/massentanglereffect5.py
Normal file
17
eos/effects/massentanglereffect5.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# massEntanglerEffect5
|
||||
#
|
||||
# Used by:
|
||||
# Module: Zero-Point Mass Entangler
|
||||
type = "active"
|
||||
|
||||
|
||||
def handler(fit, src, context):
|
||||
fit.ship.increaseItemAttr("warpScrambleStatus", src.getModifiedItemAttr("warpScrambleStrength"))
|
||||
fit.ship.boostItemAttr("mass", src.getModifiedItemAttr("massBonusPercentage"), stackingPenalties=True)
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Afterburner"), "speedFactor",
|
||||
src.getModifiedItemAttr("speedFactorBonus"), stackingPenalties=True)
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Afterburner"), "speedBoostFactor",
|
||||
src.getModifiedItemAttr("speedBoostFactorBonus"))
|
||||
fit.modules.filteredItemIncrease(lambda mod: mod.item.requiresSkill("High Speed Maneuvering"), "activationBlocked",
|
||||
src.getModifiedItemAttr("activationBlockedStrenght"))
|
||||
fit.ship.boostItemAttr("maxVelocity", src.getModifiedItemAttr("maxVelocityBonus"), stackingPenalties=True)
|
||||
@@ -5,5 +5,6 @@
|
||||
type = "active"
|
||||
|
||||
|
||||
def handler(fit, src, context):
|
||||
pass
|
||||
def handler(fit, module, context):
|
||||
fit.ship.boostItemAttr("signatureRadius", module.getModifiedItemAttr("signatureRadiusBonusPercent"),
|
||||
stackingPenalties=True)
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#
|
||||
# Used by:
|
||||
# Variations of module: Mining Laser Upgrade I (5 of 5)
|
||||
# Module: Frostline 'Omnivore' Harvester Upgrade
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
# Modules from group: Frequency Mining Laser (3 of 3)
|
||||
# Modules from group: Mining Laser (15 of 15)
|
||||
# Modules from group: Strip Miner (5 of 5)
|
||||
# Module: Citizen Miner
|
||||
type = 'active'
|
||||
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#
|
||||
# Used by:
|
||||
# Variations of module: Mining Laser Upgrade I (5 of 5)
|
||||
# Module: Frostline 'Omnivore' Harvester Upgrade
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Missile Guidance Enhancer (3 of 3)
|
||||
# Module: ML-EKP 'Polybolos' Ballistic Control System
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# missileDMGBonus
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Ballistic Control system (20 of 20)
|
||||
# Modules from group: Ballistic Control system (22 of 22)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# missileLauncherSpeedMultiplier
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Ballistic Control system (20 of 20)
|
||||
# Modules from group: Ballistic Control system (22 of 22)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
# Used by:
|
||||
# Modules from group: Drone Damage Modules (11 of 11)
|
||||
# Modules named like: C3 'Hivaa Saitsuo' Ballistic Control System (2 of 2)
|
||||
# Module: Abyssal Ballistic Control System
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
# Used by:
|
||||
# Variations of module: Armor Command Burst I (2 of 2)
|
||||
|
||||
'''
|
||||
"""
|
||||
Some documentation:
|
||||
When the fit is calculated, we gather up all the gang effects and stick them onto the fit. We don't run the actual
|
||||
effect yet, only give the fit details so that it can run the effect at a later time. We need to do this so that we can
|
||||
only run the strongest effect. When we are done, one of the last things that we do with the fit is to loop through those
|
||||
bonuses and actually run the effect. To do this, we have a special argument passed into the effect handler that tells it
|
||||
which warfareBuffID to run (shouldn't need this right now, but better safe than sorry)
|
||||
'''
|
||||
"""
|
||||
|
||||
type = "active", "gang"
|
||||
|
||||
|
||||
@@ -9,4 +9,7 @@ def handler(fit, container, context):
|
||||
if "projected" in context:
|
||||
bonus = container.getModifiedItemAttr("armorDamageAmount")
|
||||
duration = container.getModifiedItemAttr("duration") / 1000.0
|
||||
fit.extraAttributes.increase("armorRepair", bonus / duration)
|
||||
rps = bonus / duration
|
||||
fit.extraAttributes.increase("armorRepair", rps)
|
||||
fit.extraAttributes.increase("armorRepairPreSpool", rps)
|
||||
fit.extraAttributes.increase("armorRepairFullSpool", rps)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Missile Launcher Torpedo (22 of 22)
|
||||
# Items from market group: Ship Equipment > Turrets & Bays (429 of 881)
|
||||
# Items from market group: Ship Equipment > Turrets & Bays (429 of 882)
|
||||
# Module: Interdiction Sphere Launcher I
|
||||
type = "overheat"
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# overloadSelfDurationBonus
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Ancillary Remote Shield Booster (4 of 4)
|
||||
# Modules from group: Capacitor Booster (59 of 59)
|
||||
# Modules from group: Energy Neutralizer (54 of 54)
|
||||
# Modules from group: Energy Nosferatu (54 of 54)
|
||||
@@ -10,7 +11,7 @@
|
||||
# Modules from group: Remote Shield Booster (38 of 38)
|
||||
# Modules from group: Smart Bomb (118 of 118)
|
||||
# Modules from group: Warp Disrupt Field Generator (7 of 7)
|
||||
# Modules named like: Ancillary Remote (8 of 8)
|
||||
# Modules named like: Remote Repairer (56 of 56)
|
||||
# Module: Reactive Armor Hardener
|
||||
# Module: Target Spectrum Breaker
|
||||
type = "overheat"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# projectileWeaponDamageMultiply
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Gyrostabilizer (13 of 13)
|
||||
# Modules from group: Gyrostabilizer (14 of 14)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# projectileWeaponSpeedMultiply
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Gyrostabilizer (13 of 13)
|
||||
# Modules from group: Gyrostabilizer (14 of 14)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# remoteCapacitorTransmitterPowerNeedBonusEffect
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Logistics (3 of 6)
|
||||
# Ships from group: Logistics (3 of 7)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
13
eos/effects/rolebonuswarpspeed.py
Normal file
13
eos/effects/rolebonuswarpspeed.py
Normal file
@@ -0,0 +1,13 @@
|
||||
# roleBonusWarpSpeed
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Cynabal
|
||||
# Ship: Dramiel
|
||||
# Ship: Leopard
|
||||
# Ship: Machariel
|
||||
# Ship: Victorieux Luxury Yacht
|
||||
type = "passive"
|
||||
|
||||
|
||||
def handler(fit, src, context):
|
||||
fit.ship.boostItemAttr("warpSpeedMultiplier", src.getModifiedItemAttr("shipRoleBonusWarpSpeed"))
|
||||
@@ -3,6 +3,7 @@
|
||||
# Used by:
|
||||
# Structure Modules from group: Structure Citadel Service Module (2 of 2)
|
||||
# Structure Modules from group: Structure Engineering Service Module (6 of 6)
|
||||
# Structure Modules from group: Structure Navigation Service Module (3 of 3)
|
||||
# Structure Modules from group: Structure Resource Processing Service Module (4 of 4)
|
||||
# Structure Module: Standup Moon Drill I
|
||||
type = "passive"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# shieldTransportCpuNeedBonusEffect
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Logistics (3 of 6)
|
||||
# Ships from group: Logistics (3 of 7)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
10
eos/effects/shiparmoremresistancepbc2.py
Normal file
10
eos/effects/shiparmoremresistancepbc2.py
Normal file
@@ -0,0 +1,10 @@
|
||||
# shipArmorEMResistancePBC2
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Drekavac
|
||||
type = "passive"
|
||||
|
||||
|
||||
def handler(fit, ship, context):
|
||||
fit.ship.boostItemAttr("armorEmDamageResonance", ship.getModifiedItemAttr("shipBonusPBC2"),
|
||||
skill="Precursor Battlecruiser")
|
||||
10
eos/effects/shiparmorexplosiveresistancepbc2.py
Normal file
10
eos/effects/shiparmorexplosiveresistancepbc2.py
Normal file
@@ -0,0 +1,10 @@
|
||||
# shipArmorExplosiveResistancePBC2
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Drekavac
|
||||
type = "passive"
|
||||
|
||||
|
||||
def handler(fit, ship, context):
|
||||
fit.ship.boostItemAttr("armorExplosiveDamageResonance", ship.getModifiedItemAttr("shipBonusPBC2"),
|
||||
skill="Precursor Battlecruiser")
|
||||
10
eos/effects/shiparmorkineticresistancepbc2.py
Normal file
10
eos/effects/shiparmorkineticresistancepbc2.py
Normal file
@@ -0,0 +1,10 @@
|
||||
# shipArmorKineticResistancePBC2
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Drekavac
|
||||
type = "passive"
|
||||
|
||||
|
||||
def handler(fit, ship, context):
|
||||
fit.ship.boostItemAttr("armorKineticDamageResonance", ship.getModifiedItemAttr("shipBonusPBC2"),
|
||||
skill="Precursor Battlecruiser")
|
||||
10
eos/effects/shiparmorthermalresistancepbc2.py
Normal file
10
eos/effects/shiparmorthermalresistancepbc2.py
Normal file
@@ -0,0 +1,10 @@
|
||||
# shipArmorThermalResistancePBC2
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Drekavac
|
||||
type = "passive"
|
||||
|
||||
|
||||
def handler(fit, ship, context):
|
||||
fit.ship.boostItemAttr("armorThermalDamageResonance", ship.getModifiedItemAttr("shipBonusPBC2"),
|
||||
skill="Precursor Battlecruiser")
|
||||
@@ -1,8 +1,7 @@
|
||||
# shipBonusDreadnoughtC2ShieldResists
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Caiman
|
||||
# Ship: Phoenix
|
||||
# Variations of ship: Phoenix (2 of 2)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -6,5 +6,5 @@ type = "passive"
|
||||
|
||||
|
||||
def handler(fit, ship, context):
|
||||
fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == "Mining Drone",
|
||||
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Drones"),
|
||||
"miningAmount", ship.getModifiedItemAttr("shipBonusAC2"), skill="Amarr Cruiser")
|
||||
|
||||
@@ -7,5 +7,5 @@ type = "passive"
|
||||
|
||||
|
||||
def handler(fit, ship, context):
|
||||
fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == "Mining Drone",
|
||||
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Mining Drone Operation"),
|
||||
"miningAmount", ship.getModifiedItemAttr("shipBonusGC2"), skill="Gallente Cruiser")
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
# shipBonusForceAuxiliaryA3CapCapacity
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Apostle
|
||||
type = "passive"
|
||||
|
||||
|
||||
def handler(fit, src, context):
|
||||
fit.ship.boostItemAttr("capacitorCapacity", src.getModifiedItemAttr("shipBonusForceAuxiliaryA3"),
|
||||
skill="Amarr Carrier")
|
||||
@@ -1,8 +1,7 @@
|
||||
# shipBonusForceAuxiliaryC2ShieldResists
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Loggerhead
|
||||
# Ship: Minokawa
|
||||
# Variations of ship: Minokawa (2 of 2)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
# shipBonusForceAuxiliaryC3CapCapacity
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Minokawa
|
||||
type = "passive"
|
||||
|
||||
|
||||
def handler(fit, src, context):
|
||||
fit.ship.boostItemAttr("capacitorCapacity", src.getModifiedItemAttr("shipBonusForceAuxiliaryC3"),
|
||||
skill="Caldari Carrier")
|
||||
@@ -1,10 +0,0 @@
|
||||
# shipBonusForceAuxiliaryG3CapBoosterStrength
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Ninazu
|
||||
type = "passive"
|
||||
|
||||
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == "Capacitor Booster Charge", "capacitorBonus",
|
||||
src.getModifiedItemAttr("shipBonusForceAuxiliaryG3"), skill="Gallente Carrier")
|
||||
@@ -1,10 +0,0 @@
|
||||
# shipBonusForceAuxiliaryM3CapBoosterStrength
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Lif
|
||||
type = "passive"
|
||||
|
||||
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredChargeBoost(lambda mod: mod.charge.group.name == "Capacitor Booster Charge", "capacitorBonus",
|
||||
src.getModifiedItemAttr("shipBonusForceAuxiliaryM3"), skill="Minmatar Carrier")
|
||||
@@ -9,5 +9,5 @@ type = "passive"
|
||||
|
||||
|
||||
def handler(fit, container, context):
|
||||
fit.drones.filteredItemBoost(lambda drone: drone.item.group.name == "Mining Drone",
|
||||
fit.drones.filteredItemBoost(lambda drone: drone.item.requiresSkill("Mining Drone Operation"),
|
||||
"miningAmount", container.getModifiedItemAttr("rookieDroneBonus"))
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
# shipBonusMutadaptiveRemoteRepairRangeRole3
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Rodiva
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Mutadaptive Remote Armor Repairer", "maxRange", src.getModifiedItemAttr("shipBonusRole3"))
|
||||
@@ -0,0 +1,7 @@
|
||||
# shipBonusMutadaptiveRemoteRepAmounteliteBonusLogisitics2
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Zarmazd
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Mutadaptive Remote Armor Repairer", "armorDamageAmount", src.getModifiedItemAttr("eliteBonusLogistics2"), skill="Logistics Cruisers")
|
||||
@@ -0,0 +1,7 @@
|
||||
# shipBonusMutadaptiveRemoteRepCapNeedeliteBonusLogisitics1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Zarmazd
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Mutadaptive Remote Armor Repairer", "capacitorNeed", src.getModifiedItemAttr("eliteBonusLogistics1"), skill="Logistics Cruisers")
|
||||
7
eos/effects/shipbonusmutadaptiveremotereprangepc1.py
Normal file
7
eos/effects/shipbonusmutadaptiveremotereprangepc1.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# shipBonusMutadaptiveRemoteRepRangePC1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Zarmazd
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Mutadaptive Remote Armor Repairer", "maxRange", src.getModifiedItemAttr("shipBonusPC1"), skill="Precursor Cruiser")
|
||||
7
eos/effects/shipbonusmutadaptiverepamountpc1.py
Normal file
7
eos/effects/shipbonusmutadaptiverepamountpc1.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# shipBonusMutadaptiveRepAmountPC1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Rodiva
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Mutadaptive Remote Armor Repairer", "armorDamageAmount", src.getModifiedItemAttr("shipBonusPC1"), skill="Precursor Cruiser")
|
||||
7
eos/effects/shipbonusmutadaptiverepcapneedpc2.py
Normal file
7
eos/effects/shipbonusmutadaptiverepcapneedpc2.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# shipBonusMutadaptiveRepCapNeedPC2
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Rodiva
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Mutadaptive Remote Armor Repairer", "capacitorNeed", src.getModifiedItemAttr("shipBonusPC2"), skill="Precursor Cruiser")
|
||||
@@ -2,7 +2,9 @@
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Damavik
|
||||
# Ship: Drekavac
|
||||
# Ship: Hydra
|
||||
# Ship: Kikimora
|
||||
# Ship: Leshak
|
||||
# Ship: Tiamat
|
||||
# Ship: Vedmak
|
||||
|
||||
8
eos/effects/shipbonusnosneutcapneedrolebonus2.py
Normal file
8
eos/effects/shipbonusnosneutcapneedrolebonus2.py
Normal file
@@ -0,0 +1,8 @@
|
||||
# shipBonusNosNeutCapNeedRoleBonus2
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Rodiva
|
||||
# Ship: Zarmazd
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Capacitor Emission Systems"), "capacitorNeed", src.getModifiedItemAttr("shipBonusRole2"))
|
||||
11
eos/effects/shipbonuspbc1disintegratordamage.py
Normal file
11
eos/effects/shipbonuspbc1disintegratordamage.py
Normal file
@@ -0,0 +1,11 @@
|
||||
# shipBonusPBC1DisintegratorDamage
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Drekavac
|
||||
type = "passive"
|
||||
|
||||
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Medium Precursor Weapon"),
|
||||
"damageMultiplier", ship.getModifiedItemAttr("shipBonusPBC1"),
|
||||
skill="Precursor Battlecruiser")
|
||||
11
eos/effects/shipbonuspd1disintegratordamage.py
Normal file
11
eos/effects/shipbonuspd1disintegratordamage.py
Normal file
@@ -0,0 +1,11 @@
|
||||
# shipBonusPD1DisintegratorDamage
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Kikimora
|
||||
type = "passive"
|
||||
|
||||
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Small Precursor Weapon"),
|
||||
"damageMultiplier", ship.getModifiedItemAttr("shipBonusPD1"),
|
||||
skill="Precursor Destroyer")
|
||||
11
eos/effects/shipbonuspd2disintegratormaxrange.py
Normal file
11
eos/effects/shipbonuspd2disintegratormaxrange.py
Normal file
@@ -0,0 +1,11 @@
|
||||
# shipBonusPD2DisintegratorMaxRange
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Kikimora
|
||||
type = "passive"
|
||||
|
||||
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Small Precursor Weapon"),
|
||||
"maxRange", ship.getModifiedItemAttr("shipBonusPD2"),
|
||||
skill="Precursor Destroyer")
|
||||
@@ -0,0 +1,8 @@
|
||||
# shipBonusRemoteCapacitorTransferRangeRole1
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Rodiva
|
||||
# Ship: Zarmazd
|
||||
type = "passive"
|
||||
def handler(fit, src, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Remote Capacitor Transmitter", "maxRange", src.getModifiedItemAttr("shipBonusRole1"))
|
||||
@@ -2,7 +2,9 @@
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Damavik
|
||||
# Ship: Drekavac
|
||||
# Ship: Hydra
|
||||
# Ship: Kikimora
|
||||
# Ship: Leshak
|
||||
# Ship: Tiamat
|
||||
# Ship: Vedmak
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Damavik
|
||||
# Ship: Drekavac
|
||||
# Ship: Hydra
|
||||
# Ship: Kikimora
|
||||
# Ship: Leshak
|
||||
# Ship: Tiamat
|
||||
# Ship: Vedmak
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
# shipBonusRole3XLTorpdeoVelocityBonus
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Komodo
|
||||
# Ship: Leviathan
|
||||
# Variations of ship: Leviathan (2 of 2)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# shipBonusRole5RemoteArmorRepairPowergridBonus
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Logistics (3 of 6)
|
||||
# Ships from group: Logistics (3 of 7)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -2,10 +2,14 @@
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Damavik
|
||||
# Ship: Drekavac
|
||||
# Ship: Hydra
|
||||
# Ship: Kikimora
|
||||
# Ship: Leshak
|
||||
# Ship: Rodiva
|
||||
# Ship: Tiamat
|
||||
# Ship: Vedmak
|
||||
# Ship: Zarmazd
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
# shipBonusTitanA3WarpStrength
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Avatar
|
||||
# Ship: Molok
|
||||
# Variations of ship: Avatar (2 of 2)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
# shipBonusTitanC2ROFBonus
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Komodo
|
||||
# Ship: Leviathan
|
||||
# Variations of ship: Leviathan (2 of 2)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
# shipBonusTitanC3WarpStrength
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Komodo
|
||||
# Ship: Leviathan
|
||||
# Variations of ship: Leviathan (2 of 2)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Ancillary Remote Armor Repairer (4 of 4)
|
||||
runTime = "late"
|
||||
|
||||
type = "projected", "active"
|
||||
runTime = "late"
|
||||
|
||||
|
||||
def handler(fit, module, context, **kwargs):
|
||||
@@ -17,4 +18,7 @@ def handler(fit, module, context, **kwargs):
|
||||
|
||||
amount = module.getModifiedItemAttr("armorDamageAmount") * multiplier
|
||||
speed = module.getModifiedItemAttr("duration") / 1000.0
|
||||
fit.extraAttributes.increase("armorRepair", amount / speed, **kwargs)
|
||||
rps = amount / speed
|
||||
fit.extraAttributes.increase("armorRepair", rps)
|
||||
fit.extraAttributes.increase("armorRepairPreSpool", rps)
|
||||
fit.extraAttributes.increase("armorRepairFullSpool", rps)
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Ancillary Remote Shield Booster (4 of 4)
|
||||
runTime = "late"
|
||||
|
||||
type = "projected", "active"
|
||||
runTime = "late"
|
||||
|
||||
|
||||
def handler(fit, module, context, **kwargs):
|
||||
|
||||
28
eos/effects/shipmoduleremotearmormutadaptiverepairer.py
Normal file
28
eos/effects/shipmoduleremotearmormutadaptiverepairer.py
Normal file
@@ -0,0 +1,28 @@
|
||||
# ShipModuleRemoteArmorMutadaptiveRepairer
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Mutadaptive Remote Armor Repairer (5 of 5)
|
||||
|
||||
|
||||
from eos.utils.spoolSupport import SpoolType, SpoolOptions, calculateSpoolup, resolveSpoolOptions
|
||||
|
||||
|
||||
type = "projected", "active"
|
||||
runTime = "late"
|
||||
|
||||
|
||||
def handler(fit, container, context, **kwargs):
|
||||
if "projected" in context:
|
||||
repAmountBase = container.getModifiedItemAttr("armorDamageAmount")
|
||||
cycleTime = container.getModifiedItemAttr("duration") / 1000.0
|
||||
repSpoolMax = container.getModifiedItemAttr("repairMultiplierBonusMax")
|
||||
repSpoolPerCycle = container.getModifiedItemAttr("repairMultiplierBonusPerCycle")
|
||||
# TODO: fetch spoolup option
|
||||
defaultSpoolValue = 1
|
||||
spoolType, spoolAmount = resolveSpoolOptions(SpoolOptions(SpoolType.SCALE, defaultSpoolValue, False), container)
|
||||
rps = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, spoolType, spoolAmount)[0]) / cycleTime
|
||||
rpsPreSpool = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, SpoolType.SCALE, 0)[0]) / cycleTime
|
||||
rpsFullSpool = repAmountBase * (1 + calculateSpoolup(repSpoolMax, repSpoolPerCycle, cycleTime, SpoolType.SCALE, 1)[0]) / cycleTime
|
||||
fit.extraAttributes.increase("armorRepair", rps, **kwargs)
|
||||
fit.extraAttributes.increase("armorRepairPreSpool", rpsPreSpool, **kwargs)
|
||||
fit.extraAttributes.increase("armorRepairFullSpool", rpsFullSpool, **kwargs)
|
||||
@@ -2,11 +2,16 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Remote Armor Repairer (39 of 39)
|
||||
|
||||
type = "projected", "active"
|
||||
runTime = "late"
|
||||
|
||||
|
||||
def handler(fit, container, context, **kwargs):
|
||||
if "projected" in context:
|
||||
bonus = container.getModifiedItemAttr("armorDamageAmount")
|
||||
duration = container.getModifiedItemAttr("duration") / 1000.0
|
||||
fit.extraAttributes.increase("armorRepair", bonus / duration, **kwargs)
|
||||
rps = bonus / duration
|
||||
fit.extraAttributes.increase("armorRepair", rps)
|
||||
fit.extraAttributes.increase("armorRepairPreSpool", rps)
|
||||
fit.extraAttributes.increase("armorRepairFullSpool", rps)
|
||||
|
||||
@@ -2,8 +2,13 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Remote Capacitor Transmitter (41 of 41)
|
||||
|
||||
|
||||
from eos.modifiedAttributeDict import ModifiedAttributeDict
|
||||
|
||||
|
||||
type = "projected", "active"
|
||||
runTime = "late"
|
||||
|
||||
|
||||
def handler(fit, src, context, **kwargs):
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Remote Hull Repairer (8 of 8)
|
||||
|
||||
type = "projected", "active"
|
||||
runTime = "late"
|
||||
|
||||
|
||||
10
eos/effects/shiproledisintegratormaxrangecbc.py
Normal file
10
eos/effects/shiproledisintegratormaxrangecbc.py
Normal file
@@ -0,0 +1,10 @@
|
||||
# shipRoleDisintegratorMaxRangeCBC
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Drekavac
|
||||
type = "passive"
|
||||
|
||||
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Medium Precursor Weapon"),
|
||||
"maxRange", ship.getModifiedItemAttr("roleBonusCBC"))
|
||||
@@ -1,7 +1,7 @@
|
||||
# skillBonusDroneDurability
|
||||
#
|
||||
# Used by:
|
||||
# Implants from group: Cyber Drones (2 of 2)
|
||||
# Implants from group: Cyber Drones (4 of 4)
|
||||
# Skill: Drone Durability
|
||||
type = "passive"
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
# skillBonusDroneInterfacing
|
||||
#
|
||||
# Used by:
|
||||
# Implants from group: Cyber Drones (2 of 2)
|
||||
# Implant: CreoDron 'Bumblebee' Drone Tuner T10-5D
|
||||
# Implant: CreoDron 'Yellowjacket' Drone Tuner D5-10T
|
||||
# Skill: Drone Interfacing
|
||||
type = "passive"
|
||||
|
||||
|
||||
10
eos/effects/smalldisintegratormaxrangebonus.py
Normal file
10
eos/effects/smalldisintegratormaxrangebonus.py
Normal file
@@ -0,0 +1,10 @@
|
||||
# smallDisintegratorMaxRangeBonus
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Kikimora
|
||||
type = "passive"
|
||||
|
||||
|
||||
def handler(fit, ship, context):
|
||||
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Small Precursor Weapon"),
|
||||
"maxRange", ship.getModifiedItemAttr("maxRangeBonus"))
|
||||
@@ -1,7 +1,8 @@
|
||||
# structureAoERoFRoleBonus
|
||||
#
|
||||
# Used by:
|
||||
# Items from category: Structure (11 of 14)
|
||||
# Items from category: Structure (11 of 17)
|
||||
# Structures from group: Citadel (8 of 9)
|
||||
type = "passive"
|
||||
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user