Compare commits
504 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2c47d0758e | ||
|
|
8f7ae4b00c | ||
|
|
f11f3bfb79 | ||
|
|
68703f3db5 | ||
|
|
d3def54b5a | ||
|
|
27d72ed909 | ||
|
|
55e45b6bc1 | ||
|
|
252f56732b | ||
|
|
d52e88cdaa | ||
|
|
371e33764e | ||
|
|
9b8b7aba07 | ||
|
|
0a6274474e | ||
|
|
0ff69068c0 | ||
|
|
731477b366 | ||
|
|
0295f04ec4 | ||
|
|
059af217aa | ||
|
|
2a391fa38b | ||
|
|
88b1426fe0 | ||
|
|
07da5aa861 | ||
|
|
192d6f4605 | ||
|
|
487f65d62b | ||
|
|
c202aefd2e | ||
|
|
0ed91e4079 | ||
|
|
9c2a667635 | ||
|
|
19579fb087 | ||
|
|
ea77e6851e | ||
|
|
1c3f9ccf5b | ||
|
|
e42671fbec | ||
|
|
18c86daea6 | ||
|
|
c59b818677 | ||
|
|
71bf1556a1 | ||
|
|
26e50f2e8a | ||
|
|
25e30672fe | ||
|
|
1b3c058eab | ||
|
|
adcae42ae7 | ||
|
|
238712e62c | ||
|
|
f2b959895e | ||
|
|
ffb7719937 | ||
|
|
e0488dce4f | ||
|
|
88074c8516 | ||
|
|
359840aee8 | ||
|
|
77e3a0f666 | ||
|
|
3d4eef2466 | ||
|
|
663cf7104c | ||
|
|
0d6a55dcb6 | ||
|
|
85608616dd | ||
|
|
d5ce666d8d | ||
|
|
2bff11e5ab | ||
|
|
5adaaac75e | ||
|
|
a49269b759 | ||
|
|
a96efaee1a | ||
|
|
299de38bf6 | ||
|
|
b29019f0a7 | ||
|
|
da15b63831 | ||
|
|
20b2f1e5fc | ||
|
|
f1cdabf37c | ||
|
|
94e1c7aba3 | ||
|
|
797db36a42 | ||
|
|
ac18c58a0a | ||
|
|
281850d7df | ||
|
|
2e460adbc9 | ||
|
|
5660b2b8ed | ||
|
|
de9fbd672f | ||
|
|
85029f6be8 | ||
|
|
337db326fd | ||
|
|
795230dae6 | ||
|
|
022a929399 | ||
|
|
b64238634a | ||
|
|
4b0e0300ad | ||
|
|
7762bb365f | ||
|
|
dfec7d8fa2 | ||
|
|
5c5ec60efd | ||
|
|
2a7e35ff6f | ||
|
|
d7ab709d52 | ||
|
|
831478e034 | ||
|
|
d0b5f3ad78 | ||
|
|
190c1f135f | ||
|
|
374d6d6d34 | ||
|
|
edbdaf5631 | ||
|
|
23a71e7448 | ||
|
|
892c5c5b60 | ||
|
|
081e32da6f | ||
|
|
7100e8997b | ||
|
|
9a8642e789 | ||
|
|
a565abe6f7 | ||
|
|
b93b59fe4d | ||
|
|
9782ca3a29 | ||
|
|
f9fd894c9f | ||
|
|
ee8395e8fd | ||
|
|
7836506444 | ||
|
|
8df7593223 | ||
|
|
8351b0fc9d | ||
|
|
88ee1d60be | ||
|
|
dda1494b90 | ||
|
|
f53384c4c2 | ||
|
|
d4af877e47 | ||
|
|
5242c6df60 | ||
|
|
8c1d14ec4a | ||
|
|
f187caa549 | ||
|
|
70d52fd0b2 | ||
|
|
222ee22fe3 | ||
|
|
76f1f217e1 | ||
|
|
6f42e7c286 | ||
|
|
aab2ec5f96 | ||
|
|
9831ed5c3d | ||
|
|
399ec7d009 | ||
|
|
bf91e82813 | ||
|
|
7ca1fc4cfb | ||
|
|
3f86d3c33d | ||
|
|
fd1dc5b4e2 | ||
|
|
05c73d1b1b | ||
|
|
7a6e3ac665 | ||
|
|
9de8fe5884 | ||
|
|
61197ec061 | ||
|
|
9f2124ac9f | ||
|
|
dbacfc19f0 | ||
|
|
6fafe40f35 | ||
|
|
7641384aba | ||
|
|
15087a290a | ||
|
|
cb27efd5e1 | ||
|
|
091935259a | ||
|
|
1fca17f5dd | ||
|
|
98cac2a0da | ||
|
|
c28e52f2d1 | ||
|
|
36df6878e8 | ||
|
|
7077261fe1 | ||
|
|
89052edda2 | ||
|
|
e60b677b3f | ||
|
|
bf5c443053 | ||
|
|
d298ed8e01 | ||
|
|
28f2644a15 | ||
|
|
635e684c3a | ||
|
|
d991048be3 | ||
|
|
69e99d98c2 | ||
|
|
20362d2c0c | ||
|
|
2e1d0c43a1 | ||
|
|
f78e2ed405 | ||
|
|
23906d5824 | ||
|
|
41a67bfae2 | ||
|
|
df58614674 | ||
|
|
90369b679c | ||
|
|
fed7107857 | ||
|
|
4a2223323d | ||
|
|
0bbc35cd1b | ||
|
|
9b8c1ff3ba | ||
|
|
3394fabfc8 | ||
|
|
1bdfd7f924 | ||
|
|
b69a46f9b1 | ||
|
|
c17579505c | ||
|
|
2f990b9de2 | ||
|
|
c9f33f200d | ||
|
|
4abde609d8 | ||
|
|
9c09cef783 | ||
|
|
7570fee97b | ||
|
|
22e8330045 | ||
|
|
98c37a253f | ||
|
|
a931d46cb0 | ||
|
|
f4de596193 | ||
|
|
973a081e8d | ||
|
|
3054ac9d90 | ||
|
|
4ea2636788 | ||
|
|
b5f2df58ce | ||
|
|
6d15645198 | ||
|
|
a1bd671d89 | ||
|
|
aba5d43fc7 | ||
|
|
c903dff8ad | ||
|
|
35d5c49745 | ||
|
|
030e6aa9db | ||
|
|
cc770898d9 | ||
|
|
8e383a085e | ||
|
|
5fef07a552 | ||
|
|
72e272084e | ||
|
|
a2499cc070 | ||
|
|
c262acd0dc | ||
|
|
da047106f3 | ||
|
|
c04bb8f82c | ||
|
|
bb16e649af | ||
|
|
035443b4ff | ||
|
|
0e10ac3928 | ||
|
|
f0473f1eab | ||
|
|
a95eabac7b | ||
|
|
1ab76a7170 | ||
|
|
53c4a31334 | ||
|
|
f02be0b0fd | ||
|
|
0524b901f5 | ||
|
|
d5a701ab31 | ||
|
|
55c7488a0d | ||
|
|
8c8cf05207 | ||
|
|
ab9822b37e | ||
|
|
4e5f27a643 | ||
|
|
92c9e1afc3 | ||
|
|
e6e503f9e8 | ||
|
|
578716767f | ||
|
|
ec083428da | ||
|
|
f57c18810e | ||
|
|
5d4c0b443e | ||
|
|
b89f55c675 | ||
|
|
81d991b48d | ||
|
|
944bc971bd | ||
|
|
cf44af3586 | ||
|
|
3e70a6fd7c | ||
|
|
59be18506c | ||
|
|
b1bf14de29 | ||
|
|
2dd8453bbb | ||
|
|
4e61d1b17a | ||
|
|
458e89a534 | ||
|
|
493bf5cb0d | ||
|
|
0032163a38 | ||
|
|
84ac71f528 | ||
|
|
e8041470c8 | ||
|
|
8928d394c0 | ||
|
|
0881abae7b | ||
|
|
0686b602c6 | ||
|
|
fa5edbb804 | ||
|
|
1279b20370 | ||
|
|
ed1b9854a0 | ||
|
|
4fe80b7554 | ||
|
|
a5773a3fd6 | ||
|
|
ca61be2476 | ||
|
|
ae02e214f0 | ||
|
|
a0093d9760 | ||
|
|
11891340af | ||
|
|
e60735a1f2 | ||
|
|
ce3772ecee | ||
|
|
9e5f119248 | ||
|
|
1315f8d8ed | ||
|
|
bec61e43ae | ||
|
|
d29b4d91e9 | ||
|
|
356c741e54 | ||
|
|
04f52f1f86 | ||
|
|
c7042f314b | ||
|
|
dd27c3c805 | ||
|
|
9685d15e61 | ||
|
|
b31d14158f | ||
|
|
b3b62fcecc | ||
|
|
51063ef758 | ||
|
|
f406d7da09 | ||
|
|
4f64ae9f85 | ||
|
|
bdfa46cea2 | ||
|
|
693d213ec1 | ||
|
|
c76e4c8220 | ||
|
|
979539cb79 | ||
|
|
009956c301 | ||
|
|
0b64dad408 | ||
|
|
032204bd53 | ||
|
|
55847adb41 | ||
|
|
e2abc51bbf | ||
|
|
15ac9aca18 | ||
|
|
9cc70fd301 | ||
|
|
1cae335f65 | ||
|
|
3c5538109d | ||
|
|
9de7585d33 | ||
|
|
23044b5cdb | ||
|
|
dea6ced052 | ||
|
|
c584d668b7 | ||
|
|
3c6850fe7a | ||
|
|
e3590f8d16 | ||
|
|
5a586c5632 | ||
|
|
a946c9c9ed | ||
|
|
2ea0c57be5 | ||
|
|
dcd2cdeddc | ||
|
|
bd60733bfe | ||
|
|
5a1e39180a | ||
|
|
18385584bf | ||
|
|
7d58b2caa1 | ||
|
|
08f22172a6 | ||
|
|
88344dcfdc | ||
|
|
4ea69201ea | ||
|
|
07692584cf | ||
|
|
96707275be | ||
|
|
239fec48e8 | ||
|
|
6fc2cfff71 | ||
|
|
faff60c5e0 | ||
|
|
9a51d1fe3c | ||
|
|
8313fa03b8 | ||
|
|
665a1c473c | ||
|
|
c9dca6cd2a | ||
|
|
7b3e0fe3b0 | ||
|
|
8ea4ef1b44 | ||
|
|
933fbb26d7 | ||
|
|
de9ae5c78c | ||
|
|
0d1c7b93be | ||
|
|
d08b1c8284 | ||
|
|
28cfaf1702 | ||
|
|
749934b89d | ||
|
|
1c84e9dc4b | ||
|
|
df046769ff | ||
|
|
ae386cae4e | ||
|
|
d2635d6405 | ||
|
|
45fca2a87d | ||
|
|
f1f9da9214 | ||
|
|
a1416e6bec | ||
|
|
2d82eb7c92 | ||
|
|
9a2408741e | ||
|
|
b7e2b62562 | ||
|
|
fbc336b038 | ||
|
|
9dea4a26bf | ||
|
|
0ea8a7a921 | ||
|
|
0bf956e9b3 | ||
|
|
3bd66f174d | ||
|
|
4f38d71676 | ||
|
|
493294e648 | ||
|
|
2a12e4c566 | ||
|
|
b75c86d251 | ||
|
|
a148a6d818 | ||
|
|
ee8f514266 | ||
|
|
8a0778662f | ||
|
|
f9c141fa25 | ||
|
|
b783f0641c | ||
|
|
a0c1686ac5 | ||
|
|
af325caecc | ||
|
|
60a786a6a2 | ||
|
|
40c1bc8ae6 | ||
|
|
6992537750 | ||
|
|
a604093387 | ||
|
|
d9e61a3305 | ||
|
|
0c42848d52 | ||
|
|
294f51ae5d | ||
|
|
ecd82ac7a4 | ||
|
|
5395c04b18 | ||
|
|
d05b78a451 | ||
|
|
19f0bbc811 | ||
|
|
ac144e51e0 | ||
|
|
f7ef3705b5 | ||
|
|
8e9ea0a36b | ||
|
|
89a8bde574 | ||
|
|
2651a04880 | ||
|
|
197a61253f | ||
|
|
fb9da5ec8d | ||
|
|
a2727d5f47 | ||
|
|
0c40aa7244 | ||
|
|
234af1ac3d | ||
|
|
fb1323ba17 | ||
|
|
38bd33dce4 | ||
|
|
d32407b9f8 | ||
|
|
83c0bbe37b | ||
|
|
1fea4e5876 | ||
|
|
1fe19c4853 | ||
|
|
d9653ea43c | ||
|
|
943ddd3da1 | ||
|
|
08573899d3 | ||
|
|
e873f1b88e | ||
|
|
6dc4161a36 | ||
|
|
507c423e09 | ||
|
|
631d97e21a | ||
|
|
23e6331909 | ||
|
|
9bbe7f7fb0 | ||
|
|
5df7e193e7 | ||
|
|
e87ac96c6c | ||
|
|
795724cbe1 | ||
|
|
3cfa1c0822 | ||
|
|
4faa2abe96 | ||
|
|
890ff55690 | ||
|
|
73a67d0fc3 | ||
|
|
8fad69c344 | ||
|
|
76b6fb5898 | ||
|
|
641f5999f0 | ||
|
|
47ef37274b | ||
|
|
264824e7de | ||
|
|
fe824943e4 | ||
|
|
eb571b3ab3 | ||
|
|
5e464bfcf8 | ||
|
|
5df3672adf | ||
|
|
d5e8938c70 | ||
|
|
1f37656169 | ||
|
|
3a05abe490 | ||
|
|
c3ce580b8c | ||
|
|
47c46cc9c5 | ||
|
|
7a2ddad70c | ||
|
|
2f90ac64ec | ||
|
|
e23ad7b002 | ||
|
|
b98edc3f65 | ||
|
|
22f92bed24 | ||
|
|
cbea2dd55a | ||
|
|
26846fd102 | ||
|
|
004f9cb062 | ||
|
|
2903c7e0ca | ||
|
|
e00941b2c5 | ||
|
|
ffaa707ea9 | ||
|
|
7337d54511 | ||
|
|
dd395aff03 | ||
|
|
4a41638472 | ||
|
|
50fbda288a | ||
|
|
7a33aba329 | ||
|
|
ec7a58c592 | ||
|
|
9ac11f9a7c | ||
|
|
4bcb368d17 | ||
|
|
f42fd1de43 | ||
|
|
63a088631d | ||
|
|
4fa585046f | ||
|
|
f90983b541 | ||
|
|
5095ac4881 | ||
|
|
c01450d1a1 | ||
|
|
3718d20361 | ||
|
|
1d66757b28 | ||
|
|
9e67ad032c | ||
|
|
06bd15079d | ||
|
|
7e59b2d43a | ||
|
|
4430204227 | ||
|
|
652e0738af | ||
|
|
e6bc831305 | ||
|
|
513a02a4d4 | ||
|
|
f355dac322 | ||
|
|
85f632bd20 | ||
|
|
4f4829ebb4 | ||
|
|
cb0a5ded49 | ||
|
|
bf1df97886 | ||
|
|
b320c6ae77 | ||
|
|
9d2eee3b01 | ||
|
|
9b096524cc | ||
|
|
35a0b0ce4b | ||
|
|
5d75b2bd6d | ||
|
|
83cc3fd28a | ||
|
|
2d69705469 | ||
|
|
2ff6ecdbec | ||
|
|
25c9bfe4d4 | ||
|
|
91b2eff7b4 | ||
|
|
ea3969e1e3 | ||
|
|
cd5d047891 | ||
|
|
34f27f7995 | ||
|
|
752b1fe726 | ||
|
|
281e591984 | ||
|
|
b686aa6d0b | ||
|
|
035e6cea41 | ||
|
|
5aa34caca6 | ||
|
|
4fdd3f177a | ||
|
|
0826aa4bfe | ||
|
|
5869fe6d97 | ||
|
|
e877cef3a9 | ||
|
|
f7fdcfcd4e | ||
|
|
c6ad328e99 | ||
|
|
d8dfafedfa | ||
|
|
65cc0bec1c | ||
|
|
c34215f9e3 | ||
|
|
354b732c2c | ||
|
|
b910982994 | ||
|
|
f2c1002d58 | ||
|
|
50ce4d37aa | ||
|
|
46662d2b72 | ||
|
|
7579f3c3e1 | ||
|
|
3842913fe1 | ||
|
|
aaadcb9b45 | ||
|
|
29fc82b771 | ||
|
|
48963167fe | ||
|
|
4095365518 | ||
|
|
acdc2c496e | ||
|
|
26b078b69f | ||
|
|
9c792fc9a7 | ||
|
|
c7944e91e7 | ||
|
|
9e389f27b0 | ||
|
|
eef34f1dcf | ||
|
|
c1ea161060 | ||
|
|
b4aca7ae90 | ||
|
|
c0b4e73629 | ||
|
|
024637432c | ||
|
|
7ced595cca | ||
|
|
4a7782a713 | ||
|
|
d7dda83314 | ||
|
|
6ee474a8ff | ||
|
|
2e9680191b | ||
|
|
d7b7d127b8 | ||
|
|
2096b7641f | ||
|
|
2b83d17bd2 | ||
|
|
d7e880c42b | ||
|
|
e17c0610fb | ||
|
|
98e9ab461a | ||
|
|
a833b2f5cc | ||
|
|
9076175b0c | ||
|
|
a9843b637a | ||
|
|
b9ffe18775 | ||
|
|
6728121f9f | ||
|
|
98850bfc1d | ||
|
|
a5f821850b | ||
|
|
d97764586f | ||
|
|
3cd80b4dfe | ||
|
|
97548212b5 | ||
|
|
7986177a16 | ||
|
|
82733a81c8 | ||
|
|
20cb2ca7d4 | ||
|
|
3b13b42bdf | ||
|
|
09374f1643 | ||
|
|
388c3c8bf1 | ||
|
|
24df54723f | ||
|
|
e513d4d78a | ||
|
|
666f4c9adb | ||
|
|
053e6b1780 | ||
|
|
5162db11df | ||
|
|
21b85690fe | ||
|
|
8a663ef8ed | ||
|
|
46c46fce48 | ||
|
|
782f3cd590 | ||
|
|
b6feb1c6a1 | ||
|
|
c8e692d8d8 | ||
|
|
fc6aa191f1 | ||
|
|
44f581ce3c | ||
|
|
f03df712b1 | ||
|
|
9d132d3bb9 | ||
|
|
a4d72caffa | ||
|
|
bb76e9b3b4 | ||
|
|
b9e2b11a54 | ||
|
|
5c1b39b492 | ||
|
|
f208e3c39e | ||
|
|
30c0b19e89 | ||
|
|
cd41a12ccb |
8
.gitignore
vendored
8
.gitignore
vendored
@@ -11,4 +11,12 @@
|
||||
|
||||
#Patch files
|
||||
*.patch
|
||||
|
||||
#Personal
|
||||
saveddata/
|
||||
|
||||
#PyCharm
|
||||
.idea/
|
||||
|
||||
#Pyfa file
|
||||
pyfaFits.html
|
||||
|
||||
15
README.md
Normal file
15
README.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Pyfa
|
||||
|
||||
Pyfa is a cross-platform desktop fitting application for EVE online that can be used natively on any platform where python and wxwidgets are available.
|
||||
|
||||
It provides many advanced features such as graphs and full calculations of any possible combination of modules, fits, etc.
|
||||
|
||||
Please see the [FAQ](https://github.com/DarkFenX/Pyfa/wiki/FAQ) for answers to common questions / concerns
|
||||
|
||||
#### Links
|
||||
* [Development repository: http://github.com/DarkFenX/Pyfa](http://github.com/DarkFenX/Pyfa)
|
||||
* [XMPP conference:
|
||||
pyfa@conference.jabber.org](pyfa@conference.jabber.org)
|
||||
* [EVE forum thread](http://forums.eveonline.com/default.aspx?g=posts&t=247609)
|
||||
* [EVE Online website](http://www.eveonline.com/)
|
||||
|
||||
21
config.py
21
config.py
@@ -13,12 +13,16 @@ debug = False
|
||||
saveInRoot = False
|
||||
|
||||
# Version data
|
||||
version = "1.1.16"
|
||||
version = "1.8.0"
|
||||
tag = "Stable"
|
||||
expansionName = "Odyssey"
|
||||
expansionVersion = "1.1"
|
||||
expansionName = "Proteus"
|
||||
expansionVersion = "1.0"
|
||||
evemonMinVersion = "4081"
|
||||
|
||||
# Database version (int ONLY)
|
||||
# Increment every time we need to flag for user database upgrade/modification
|
||||
dbversion = 3
|
||||
|
||||
pyfaPath = None
|
||||
savePath = None
|
||||
staticPath = None
|
||||
@@ -34,9 +38,10 @@ def defPaths():
|
||||
global saveInRoot
|
||||
# The main pyfa directory which contains run.py
|
||||
# Python 2.X uses ANSI by default, so we need to convert the character encoding
|
||||
pyfaPath = getattr(configforced, "pyfaPath", None)
|
||||
pyfaPath = getattr(configforced, "pyfaPath", pyfaPath)
|
||||
if pyfaPath is None:
|
||||
pyfaPath = unicode(os.path.dirname(os.path.abspath(sys.modules['__main__'].__file__)), sys.getfilesystemencoding())
|
||||
pyfaPath = unicode(os.path.dirname(os.path.realpath(os.path.abspath(
|
||||
sys.modules['__main__'].__file__))), sys.getfilesystemencoding())
|
||||
|
||||
# Where we store the saved fits etc, default is the current users home directory
|
||||
if saveInRoot is True:
|
||||
@@ -46,7 +51,8 @@ def defPaths():
|
||||
else:
|
||||
savePath = getattr(configforced, "savePath", None)
|
||||
if savePath is None:
|
||||
savePath = unicode(os.path.expanduser(os.path.join("~", ".pyfa")), sys.getfilesystemencoding())
|
||||
savePath = unicode(os.path.expanduser(os.path.join("~", ".pyfa")),
|
||||
sys.getfilesystemencoding())
|
||||
|
||||
# Redirect stderr to file if we're requested to do so
|
||||
stderrToFile = getattr(configforced, "stderrToFile", None)
|
||||
@@ -62,7 +68,8 @@ def defPaths():
|
||||
os.mkdir(savePath)
|
||||
sys.stdout = open(os.path.join(savePath, "output_log.txt"), "w")
|
||||
|
||||
# Static EVE Data from the staticdata repository, should be in the staticdata directory in our pyfa directory
|
||||
# Static EVE Data from the staticdata repository, should be in the staticdata
|
||||
# directory in our pyfa directory
|
||||
staticPath = os.path.join(pyfaPath, "staticdata")
|
||||
|
||||
# The database where we store all the fits etc
|
||||
|
||||
0
eos/__init__.py
Executable file → Normal file
0
eos/__init__.py
Executable file → Normal file
0
eos/capSim.py
Executable file → Normal file
0
eos/capSim.py
Executable file → Normal file
0
eos/config.py
Executable file → Normal file
0
eos/config.py
Executable file → Normal file
14
eos/db/__init__.py
Executable file → Normal file
14
eos/db/__init__.py
Executable file → Normal file
@@ -40,6 +40,15 @@ gamedata_meta = MetaData()
|
||||
gamedata_meta.bind = gamedata_engine
|
||||
gamedata_session = sessionmaker(bind=gamedata_engine, autoflush=False, expire_on_commit=False)()
|
||||
|
||||
# This should be moved elsewhere, maybe as an actual query. Current, without try-except, it breaks when making a new
|
||||
# game db because we haven't reached gamedata_meta.create_all()
|
||||
try:
|
||||
config.gamedata_version = gamedata_session.execute(
|
||||
"SELECT `field_value` FROM `metadata` WHERE `field_name` LIKE 'client_build'"
|
||||
).fetchone()[0]
|
||||
except:
|
||||
config.gamedata_version = None
|
||||
|
||||
saveddata_connectionstring = config.saveddata_connectionstring
|
||||
if saveddata_connectionstring is not None:
|
||||
if callable(saveddata_connectionstring):
|
||||
@@ -49,7 +58,6 @@ if saveddata_connectionstring is not None:
|
||||
|
||||
saveddata_meta = MetaData()
|
||||
saveddata_meta.bind = saveddata_engine
|
||||
migration.update(saveddata_engine)
|
||||
saveddata_session = sessionmaker(bind=saveddata_engine, autoflush=False, expire_on_commit=False)()
|
||||
|
||||
# Lock controlling any changes introduced to session
|
||||
@@ -66,7 +74,8 @@ from eos.db.saveddata.queries import getUser, getCharacter, getFit, getFitsWithS
|
||||
getCharacterList, getPrice, getDamagePatternList, getDamagePattern, \
|
||||
getFitList, getFleetList, getFleet, save, remove, commit, add, \
|
||||
getCharactersForUser, getMiscData, getSquadsIDsWithFitID, getWing, \
|
||||
getSquad
|
||||
getSquad, getBoosterFits, getProjectedFits, getTargetResistsList, getTargetResists,\
|
||||
clearPrices, countAllFits
|
||||
|
||||
#If using in memory saveddata, you'll want to reflect it so the data structure is good.
|
||||
if config.saveddata_connectionstring == "sqlite:///:memory:":
|
||||
@@ -75,3 +84,4 @@ if config.saveddata_connectionstring == "sqlite:///:memory:":
|
||||
def rollback():
|
||||
with sd_lock:
|
||||
saveddata_session.rollback()
|
||||
|
||||
|
||||
0
eos/db/gamedata/__init__.py
Executable file → Normal file
0
eos/db/gamedata/__init__.py
Executable file → Normal file
1
eos/db/gamedata/attribute.py
Executable file → Normal file
1
eos/db/gamedata/attribute.py
Executable file → Normal file
@@ -31,6 +31,7 @@ attributes_table = Table("dgmattribs", gamedata_meta,
|
||||
Column("attributeID", Integer, primary_key = True),
|
||||
Column("attributeName", String),
|
||||
Column("defaultValue", Float),
|
||||
Column("maxAttributeID", Integer, ForeignKey("dgmattribs.attributeID")),
|
||||
Column("description", Unicode),
|
||||
Column("published", Boolean),
|
||||
Column("displayName", String),
|
||||
|
||||
0
eos/db/gamedata/category.py
Executable file → Normal file
0
eos/db/gamedata/category.py
Executable file → Normal file
0
eos/db/gamedata/effect.py
Executable file → Normal file
0
eos/db/gamedata/effect.py
Executable file → Normal file
0
eos/db/gamedata/group.py
Executable file → Normal file
0
eos/db/gamedata/group.py
Executable file → Normal file
0
eos/db/gamedata/icon.py
Executable file → Normal file
0
eos/db/gamedata/icon.py
Executable file → Normal file
12
eos/db/gamedata/item.py
Executable file → Normal file
12
eos/db/gamedata/item.py
Executable file → Normal file
@@ -23,13 +23,14 @@ from sqlalchemy.ext.associationproxy import association_proxy
|
||||
from sqlalchemy.orm.collections import attribute_mapped_collection
|
||||
|
||||
from eos.db import gamedata_meta
|
||||
from eos.types import Icon, Attribute, Item, Effect, MetaType, Group
|
||||
from eos.types import Icon, Attribute, Item, Effect, MetaType, Group, Traits
|
||||
|
||||
items_table = Table("invtypes", gamedata_meta,
|
||||
Column("typeID", Integer, primary_key = True),
|
||||
Column("typeName", String, index=True),
|
||||
Column("description", String),
|
||||
Column("raceID", Integer),
|
||||
Column("factionID", Integer),
|
||||
Column("volume", Float),
|
||||
Column("mass", Float),
|
||||
Column("capacity", Float),
|
||||
@@ -38,9 +39,8 @@ items_table = Table("invtypes", gamedata_meta,
|
||||
Column("iconID", Integer, ForeignKey("icons.iconID")),
|
||||
Column("groupID", Integer, ForeignKey("invgroups.groupID"), index=True))
|
||||
|
||||
|
||||
|
||||
from .metaGroup import metatypes_table
|
||||
from .traits import traits_table
|
||||
|
||||
mapper(Item, items_table,
|
||||
properties = {"group" : relation(Group, backref = "items"),
|
||||
@@ -52,6 +52,10 @@ mapper(Item, items_table,
|
||||
uselist = False),
|
||||
"ID" : synonym("typeID"),
|
||||
"name" : synonym("typeName"),
|
||||
"description" : deferred(items_table.c.description)})
|
||||
"description" : deferred(items_table.c.description),
|
||||
"traits" : relation(Traits,
|
||||
primaryjoin = traits_table.c.typeID == items_table.c.typeID,
|
||||
uselist = False)
|
||||
})
|
||||
|
||||
Item.category = association_proxy("group", "category")
|
||||
|
||||
0
eos/db/gamedata/marketGroup.py
Executable file → Normal file
0
eos/db/gamedata/marketGroup.py
Executable file → Normal file
4
eos/db/gamedata/metaData.py
Executable file → Normal file
4
eos/db/gamedata/metaData.py
Executable file → Normal file
@@ -23,7 +23,7 @@ from eos.types import MetaData
|
||||
from eos.db import gamedata_meta
|
||||
|
||||
metadata_table = Table("metadata", gamedata_meta,
|
||||
Column("fieldName", String, primary_key=True),
|
||||
Column("fieldValue", String))
|
||||
Column("field_name", String, primary_key=True),
|
||||
Column("field_value", String))
|
||||
|
||||
mapper(MetaData, metadata_table)
|
||||
|
||||
0
eos/db/gamedata/metaGroup.py
Executable file → Normal file
0
eos/db/gamedata/metaGroup.py
Executable file → Normal file
9
eos/db/gamedata/queries.py
Executable file → Normal file
9
eos/db/gamedata/queries.py
Executable file → Normal file
@@ -184,8 +184,6 @@ def getItemsByCategory(filter, where=None, eager=None):
|
||||
def searchItems(nameLike, where=None, join=None, eager=None):
|
||||
if not isinstance(nameLike, basestring):
|
||||
raise TypeError("Need string as argument")
|
||||
# Prepare our string for request
|
||||
nameLike = u"%{0}%".format(sqlizeString(nameLike))
|
||||
|
||||
if join is None:
|
||||
join = tuple()
|
||||
@@ -193,8 +191,11 @@ def searchItems(nameLike, where=None, join=None, eager=None):
|
||||
if not hasattr(join, "__iter__"):
|
||||
join = (join,)
|
||||
|
||||
filter = processWhere(Item.name.like(nameLike, escape="\\"), where)
|
||||
items = gamedata_session.query(Item).options(*processEager(eager)).join(*join).filter(filter).all()
|
||||
items = gamedata_session.query(Item).options(*processEager(eager)).join(*join)
|
||||
for token in nameLike.split(' '):
|
||||
token_safe = u"%{0}%".format(sqlizeString(token))
|
||||
items = items.filter(processWhere(Item.name.like(token_safe, escape="\\"), where))
|
||||
items = items.limit(100).all()
|
||||
return items
|
||||
|
||||
@cachedQuery(2, "where", "itemids")
|
||||
|
||||
11
eos/db/gamedata/traits.py
Normal file
11
eos/db/gamedata/traits.py
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
from sqlalchemy import Column, Table, Integer, String, ForeignKey
|
||||
from sqlalchemy.orm import mapper
|
||||
from eos.types import Traits
|
||||
from eos.db import gamedata_meta
|
||||
|
||||
traits_table = Table("invtraits", gamedata_meta,
|
||||
Column("typeID", Integer, ForeignKey("invtypes.typeID"), primary_key=True),
|
||||
Column("traitText", String))
|
||||
|
||||
mapper(Traits, traits_table);
|
||||
0
eos/db/gamedata/unit.py
Executable file → Normal file
0
eos/db/gamedata/unit.py
Executable file → Normal file
61
eos/db/migration.py
Executable file → Normal file
61
eos/db/migration.py
Executable file → Normal file
@@ -1,41 +1,32 @@
|
||||
import sqlalchemy
|
||||
import config
|
||||
import shutil
|
||||
import time
|
||||
|
||||
def getVersion(db):
|
||||
cursor = db.execute('PRAGMA user_version')
|
||||
return cursor.fetchone()[0]
|
||||
|
||||
def update(saveddata_engine):
|
||||
checkPriceFailures(saveddata_engine)
|
||||
checkApiDefaultChar(saveddata_engine)
|
||||
currversion = getVersion(saveddata_engine)
|
||||
|
||||
if currversion == config.dbversion:
|
||||
return
|
||||
|
||||
def checkPriceFailures(saveddata_engine):
|
||||
# Check if we have 'failed' column
|
||||
try:
|
||||
saveddata_engine.execute("SELECT failed FROM prices")
|
||||
except sqlalchemy.exc.DatabaseError:
|
||||
# As we don't have any important data there, let's just drop
|
||||
# and recreate whole table
|
||||
from eos.db.saveddata.price import prices_table
|
||||
# Attempt to drop/create table only if it's already there
|
||||
try:
|
||||
prices_table.drop(saveddata_engine)
|
||||
prices_table.create(saveddata_engine)
|
||||
except sqlalchemy.exc.DatabaseError:
|
||||
pass
|
||||
if currversion < config.dbversion:
|
||||
# Automatically backup database
|
||||
toFile = "%s/saveddata_migration_%d-%d_%s.db"%(
|
||||
config.savePath,
|
||||
currversion,
|
||||
config.dbversion,
|
||||
time.strftime("%Y%m%d_%H%M%S"))
|
||||
|
||||
shutil.copyfile(config.saveDB, toFile)
|
||||
|
||||
def checkApiDefaultChar(saveddata_engine):
|
||||
try:
|
||||
saveddata_engine.execute("SELECT * FROM characters LIMIT 1")
|
||||
# If table doesn't exist, it means we're doing everything from scratch
|
||||
# and sqlalchemy will process everything as needed
|
||||
except sqlalchemy.exc.DatabaseError:
|
||||
pass
|
||||
# If not, we're running on top of existing DB
|
||||
else:
|
||||
# Check that we have columns
|
||||
try:
|
||||
saveddata_engine.execute("SELECT defaultChar, chars FROM characters LIMIT 1")
|
||||
# If we don't, create them
|
||||
# This is ugly as hell, but we can't use proper migrate packages as it
|
||||
# will require us to rebuild skeletons, including mac
|
||||
except sqlalchemy.exc.DatabaseError:
|
||||
saveddata_engine.execute("ALTER TABLE characters ADD COLUMN defaultChar INTEGER;")
|
||||
saveddata_engine.execute("ALTER TABLE characters ADD COLUMN chars VARCHAR;")
|
||||
for version in xrange(currversion, config.dbversion):
|
||||
module = __import__('eos.db.migrations.upgrade%d'%(version+1), fromlist=True)
|
||||
upgrade = getattr(module, "upgrade", False)
|
||||
if upgrade:
|
||||
upgrade(saveddata_engine)
|
||||
|
||||
# when all is said and done, set version to current
|
||||
saveddata_engine.execute('PRAGMA user_version = %d'%config.dbversion)
|
||||
|
||||
9
eos/db/migrations/__init__.py
Normal file
9
eos/db/migrations/__init__.py
Normal file
@@ -0,0 +1,9 @@
|
||||
"""
|
||||
The migration module includes migration logic to update database scheme and/or
|
||||
data for the user database.
|
||||
|
||||
To create a migration, simply create a file upgrade<migration number>.py and
|
||||
define an upgrade() function with the logic. Please note that there must be as
|
||||
many upgrade files as there are database versions (version 5 would include
|
||||
upgrade files 1-5)
|
||||
"""
|
||||
97
eos/db/migrations/upgrade1.py
Normal file
97
eos/db/migrations/upgrade1.py
Normal file
@@ -0,0 +1,97 @@
|
||||
"""
|
||||
Migration 1
|
||||
|
||||
- Alters fits table to introduce target resist attribute
|
||||
- Converts modules based on Oceanus Module Tiericide
|
||||
Some modules have been deleted, which causes pyfa to crash when fits are
|
||||
loaded as they no longer exist in the database. We therefore replace these
|
||||
modules with their new replacements
|
||||
|
||||
Based on http://community.eveonline.com/news/patch-notes/patch-notes-for-oceanus/
|
||||
and output of itemDiff.py
|
||||
"""
|
||||
|
||||
import sqlalchemy
|
||||
|
||||
CONVERSIONS = {
|
||||
6135: [ # Scoped Cargo Scanner
|
||||
6133, # Interior Type-E Cargo Identifier
|
||||
],
|
||||
6527: [ # Compact Ship Scanner
|
||||
6525, # Ta3 Perfunctory Vessel Probe
|
||||
6529, # Speculative Ship Identifier I
|
||||
6531, # Practical Type-E Ship Probe
|
||||
],
|
||||
6569: [ # Scoped Survey Scanner
|
||||
6567, # ML-3 Amphilotite Mining Probe
|
||||
6571, # Rock-Scanning Sensor Array I
|
||||
6573, # 'Dactyl' Type-E Asteroid Analyzer
|
||||
],
|
||||
509: [ # 'Basic' Capacitor Flux Coil
|
||||
8163, # Partial Power Plant Manager: Capacitor Flux
|
||||
8165, # Alpha Reactor Control: Capacitor Flux
|
||||
8167, # Type-E Power Core Modification: Capacitor Flux
|
||||
8169, # Marked Generator Refitting: Capacitor Flux
|
||||
],
|
||||
8135: [ # Restrained Capacitor Flux Coil
|
||||
8131, # Local Power Plant Manager: Capacitor Flux I
|
||||
],
|
||||
8133: [ # Compact Capacitor Flux Coil
|
||||
8137, # Mark I Generator Refitting: Capacitor Flux
|
||||
],
|
||||
3469: [ # Basic Co-Processor
|
||||
8744, # Nanoelectrical Co-Processor
|
||||
8743, # Nanomechanical CPU Enhancer
|
||||
8746, # Quantum Co-Processor
|
||||
8745, # Photonic CPU Enhancer
|
||||
15425, # Naiyon's Modified Co-Processor (never existed but convert
|
||||
# anyway as some fits may include it)
|
||||
],
|
||||
8748: [ # Upgraded Co-Processor
|
||||
8747, # Nanomechanical CPU Enhancer I
|
||||
8750, # Quantum Co-Processor I
|
||||
8749, # Photonic CPU Enhancer I
|
||||
],
|
||||
1351: [ # Basic Reactor Control Unit
|
||||
8251, # Partial Power Plant Manager: Reaction Control
|
||||
8253, # Alpha Reactor Control: Reaction Control
|
||||
8257, # Marked Generator Refitting: Reaction Control
|
||||
],
|
||||
8263: [ # Compact Reactor Control Unit
|
||||
8259, # Local Power Plant Manager: Reaction Control I
|
||||
8265, # Mark I Generator Refitting: Reaction Control
|
||||
8261, # Beta Reactor Control: Reaction Control I
|
||||
],
|
||||
16537: [ # Compact Micro Auxiliary Power Core
|
||||
16539, # Micro B88 Core Augmentation
|
||||
16541, # Micro K-Exhaust Core Augmentation
|
||||
],
|
||||
31936: [ # Navy Micro Auxiliary Power Core
|
||||
16543, # Micro 'Vigor' Core Augmentation
|
||||
],
|
||||
8089: [ # Compact Light Missile Launcher
|
||||
8093, # Prototype 'Arbalest' Light Missile Launcher
|
||||
],
|
||||
8091: [ # Ample Light Missile Launcher
|
||||
7993, # Experimental TE-2100 Light Missile Launcher
|
||||
],
|
||||
# Surface Cargo Scanner I was removed from game, however no mention of
|
||||
# replacement module in patch notes. Morphing it to meta 0 module to be safe
|
||||
442: [ # Cargo Scanner I
|
||||
6129, # Surface Cargo Scanner I
|
||||
]
|
||||
}
|
||||
|
||||
def upgrade(saveddata_engine):
|
||||
# Update fits schema to include target resists attribute
|
||||
try:
|
||||
saveddata_engine.execute("SELECT targetResistsID FROM fits LIMIT 1")
|
||||
except sqlalchemy.exc.DatabaseError:
|
||||
saveddata_engine.execute("ALTER TABLE fits ADD COLUMN targetResistsID INTEGER;")
|
||||
|
||||
# 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))
|
||||
|
||||
21
eos/db/migrations/upgrade2.py
Normal file
21
eos/db/migrations/upgrade2.py
Normal file
@@ -0,0 +1,21 @@
|
||||
"""
|
||||
Migration 2
|
||||
|
||||
- Includes old upgrade paths pre-1.5.0. See GH issue #190 for why this is needed
|
||||
"""
|
||||
|
||||
import sqlalchemy
|
||||
|
||||
def upgrade(saveddata_engine):
|
||||
# Update characters schema to include default chars
|
||||
try:
|
||||
saveddata_engine.execute("SELECT defaultChar, chars FROM characters LIMIT 1")
|
||||
except sqlalchemy.exc.DatabaseError:
|
||||
saveddata_engine.execute("ALTER TABLE characters ADD COLUMN defaultChar INTEGER")
|
||||
saveddata_engine.execute("ALTER TABLE characters ADD COLUMN chars VARCHAR")
|
||||
|
||||
# Update fits schema to include booster attribute
|
||||
try:
|
||||
saveddata_engine.execute("SELECT booster FROM fits LIMIT 1")
|
||||
except sqlalchemy.exc.DatabaseError:
|
||||
saveddata_engine.execute("ALTER TABLE fits ADD COLUMN booster BOOLEAN")
|
||||
13
eos/db/migrations/upgrade3.py
Normal file
13
eos/db/migrations/upgrade3.py
Normal file
@@ -0,0 +1,13 @@
|
||||
"""
|
||||
Migration 3
|
||||
|
||||
- Adds mode column for fits (t3 dessy)
|
||||
"""
|
||||
|
||||
import sqlalchemy
|
||||
|
||||
def upgrade(saveddata_engine):
|
||||
try:
|
||||
saveddata_engine.execute("SELECT modeID FROM fits LIMIT 1")
|
||||
except sqlalchemy.exc.DatabaseError:
|
||||
saveddata_engine.execute("ALTER TABLE fits ADD COLUMN modeID INTEGER")
|
||||
141
eos/db/migrations/upgrade4.py
Normal file
141
eos/db/migrations/upgrade4.py
Normal file
@@ -0,0 +1,141 @@
|
||||
"""
|
||||
Migration 4
|
||||
|
||||
- Converts modules based on Proteus Module 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
|
||||
|
||||
Based on http://community.eveonline.com/news/patch-notes/patch-notes-for-proteus/
|
||||
and output of itemDiff.py
|
||||
"""
|
||||
|
||||
|
||||
CONVERSIONS = {
|
||||
506: ( # 'Basic' Capacitor Power Relay
|
||||
8205, # Alpha Reactor Control: Capacitor Power Relay
|
||||
8209, # Marked Generator Refitting: Capacitor Power Relay
|
||||
8203, # Partial Power Plant Manager: Capacity Power Relay
|
||||
8207, # Type-E Power Core Modification: Capacitor Power Relay
|
||||
),
|
||||
8177: ( # Mark I Compact Capacitor Power Relay
|
||||
8173, # Beta Reactor Control: Capacitor Power Relay I
|
||||
),
|
||||
8175: ( # Type-D Restrained Capacitor Power Relay
|
||||
8171, # Local Power Plant Manager: Capacity Power Relay I
|
||||
),
|
||||
|
||||
421: ( # 'Basic' Capacitor Recharger
|
||||
4425, # AGM Capacitor Charge Array,
|
||||
4421, # F-a10 Buffer Capacitor Regenerator
|
||||
4423, # Industrial Capacitor Recharger
|
||||
4427, # Secondary Parallel Link-Capacitor
|
||||
),
|
||||
4435: ( # Eutectic Compact Cap Recharger
|
||||
4433, # Barton Reactor Capacitor Recharger I
|
||||
4431, # F-b10 Nominal Capacitor Regenerator
|
||||
4437, # Fixed Parallel Link-Capacitor I
|
||||
),
|
||||
|
||||
1315: ( # 'Basic' Expanded Cargohold
|
||||
5483, # Alpha Hull Mod Expanded Cargo
|
||||
5479, # Marked Modified SS Expanded Cargo
|
||||
5481, # Partial Hull Conversion Expanded Cargo
|
||||
5485, # Type-E Altered SS Expanded Cargo
|
||||
),
|
||||
5493: ( # Type-D Restrained Expanded Cargo
|
||||
5491, # Beta Hull Mod Expanded Cargo
|
||||
5489, # Local Hull Conversion Expanded Cargo I
|
||||
5487, # Mark I Modified SS Expanded Cargo
|
||||
),
|
||||
|
||||
1401: ( # 'Basic' Inertial Stabilizers
|
||||
5523, # Alpha Hull Mod Inertial Stabilizers
|
||||
5521, # Partial Hull Conversion Inertial Stabilizers
|
||||
5525, # Type-E Altered SS Inertial Stabilizers
|
||||
),
|
||||
5533: ( # Type-D Restrained Inertial Stabilizers
|
||||
5531, # Beta Hull Mod Inertial Stabilizers
|
||||
5529, # Local Hull Conversion Inertial Stabilizers I
|
||||
5527, # Mark I Modified SS Inertial Stabilizers
|
||||
5519, # Marked Modified SS Inertial Stabilizers
|
||||
),
|
||||
|
||||
5239: ( # EP-S Gaussian Scoped Mining Laser
|
||||
5241, # Dual Diode Mining Laser I
|
||||
),
|
||||
5233: ( # Single Diode Basic Mining Laser
|
||||
5231, # EP-R Argon Ion Basic Excavation Pulse
|
||||
5237, # Rubin Basic Particle Bore Stream
|
||||
5235, # Xenon Basic Drilling Beam
|
||||
),
|
||||
5245: ( # Particle Bore Compact Mining Laser
|
||||
5243, # XeCl Drilling Beam I
|
||||
),
|
||||
|
||||
22619: ( # Frigoris Restrained Ice Harvester Upgrade
|
||||
22617, # Crisium Ice Harvester Upgrade
|
||||
),
|
||||
22611: ( # Elara Restrained Mining Laser Upgrade
|
||||
22609, # Erin Mining Laser Upgrade
|
||||
),
|
||||
|
||||
1242: ( # 'Basic' Nanofiber Internal Structure
|
||||
5591, # Alpha Hull Mod Nanofiber Structure
|
||||
5595, # Marked Modified SS Nanofiber Structure
|
||||
5559, # Partial Hull Conversion Nanofiber Structure
|
||||
5593, # Type-E Altered SS Nanofiber Structure
|
||||
),
|
||||
5599: ( # Type-D Restrained Nanofiber Structure
|
||||
5597, # Beta Hull Mod Nanofiber Structure
|
||||
5561, # Local Hull Conversion Nanofiber Structure I
|
||||
5601, # Mark I Modified SS Nanofiber Structure
|
||||
),
|
||||
|
||||
1192: ( # 'Basic' Overdrive Injector System
|
||||
5613, # Alpha Hull Mod Overdrive Injector
|
||||
5617, # Marked Modified SS Overdrive Injector
|
||||
5611, # Partial Hull Conversion Overdrive Injector
|
||||
5615, # Type-E Altered SS Overdrive Injector
|
||||
),
|
||||
5631: ( # Type-D Restrained Overdrive Injector
|
||||
5629, # Beta Hull Mod Overdrive Injector
|
||||
5627, # Local Hull Conversion Overdrive Injector I
|
||||
5633, # Mark I Modified SS Overdrive Injector
|
||||
),
|
||||
|
||||
1537: ( # 'Basic' Power Diagnostic System
|
||||
8213, # Alpha Reactor Control: Diagnostic System
|
||||
8217, # Marked Generator Refitting: Diagnostic System
|
||||
8211, # Partial Power Plant Manager: Diagnostic System
|
||||
8215, # Type-E Power Core Modification: Diagnostic System
|
||||
8255, # Type-E Power Core Modification: Reaction Control
|
||||
),
|
||||
8225: ( # Mark I Compact Power Diagnostic System
|
||||
8221, # Beta Reactor Control: Diagnostic System I
|
||||
8219, # Local Power Plant Manager: Diagnostic System I
|
||||
8223, # Type-D Power Core Modification: Diagnostic System
|
||||
),
|
||||
|
||||
1240: ( # 'Basic' Reinforced Bulkheads
|
||||
5677, # Alpha Hull Mod Reinforced Bulkheads
|
||||
5681, # Marked Modified SS Reinforced Bulkheads
|
||||
5675, # Partial Hull Conversion Reinforced Bulkheads
|
||||
5679, # Type-E Altered SS Reinforced Bulkheads
|
||||
),
|
||||
5649: ( # Mark I Compact Reinforced Bulkheads
|
||||
5645, # Beta Hull Mod Reinforced Bulkheads
|
||||
),
|
||||
5647: ( # Type-D Restrained Reinforced Bulkheads
|
||||
5643, # Local Hull Conversion Reinforced Bulkheads I
|
||||
),
|
||||
}
|
||||
|
||||
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))
|
||||
|
||||
2
eos/db/saveddata/__init__.py
Executable file → Normal file
2
eos/db/saveddata/__init__.py
Executable file → Normal file
@@ -1,3 +1,3 @@
|
||||
__all__ = ["character", "fit", "module", "user", "skill", "price",
|
||||
"booster", "drone", "implant", "fleet", "damagePattern",
|
||||
"miscData"]
|
||||
"miscData", "targetResists"]
|
||||
|
||||
0
eos/db/saveddata/booster.py
Executable file → Normal file
0
eos/db/saveddata/booster.py
Executable file → Normal file
32
eos/db/saveddata/cargo.py
Normal file
32
eos/db/saveddata/cargo.py
Normal file
@@ -0,0 +1,32 @@
|
||||
#===============================================================================
|
||||
# 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, ForeignKey, Boolean
|
||||
from sqlalchemy.orm import mapper
|
||||
|
||||
from eos.db import saveddata_meta
|
||||
from eos.types import Cargo
|
||||
|
||||
cargo_table = Table("cargo", saveddata_meta,
|
||||
Column("ID", Integer, primary_key=True),
|
||||
Column("fitID", Integer, ForeignKey("fits.ID"), nullable = False, index = True),
|
||||
Column("itemID", Integer, nullable = False),
|
||||
Column("amount", Integer, nullable = False))
|
||||
|
||||
mapper(Cargo, cargo_table)
|
||||
0
eos/db/saveddata/character.py
Executable file → Normal file
0
eos/db/saveddata/character.py
Executable file → Normal file
0
eos/db/saveddata/damagePattern.py
Executable file → Normal file
0
eos/db/saveddata/damagePattern.py
Executable file → Normal file
0
eos/db/saveddata/drone.py
Executable file → Normal file
0
eos/db/saveddata/drone.py
Executable file → Normal file
17
eos/db/saveddata/fit.py
Executable file → Normal file
17
eos/db/saveddata/fit.py
Executable file → Normal file
@@ -17,18 +17,20 @@
|
||||
# along with eos. If not, see <http://www.gnu.org/licenses/>.
|
||||
#===============================================================================
|
||||
|
||||
from sqlalchemy import Table, Column, Integer, ForeignKey, String
|
||||
from sqlalchemy import Table, Column, Integer, ForeignKey, String, Boolean
|
||||
from sqlalchemy.orm import relation, mapper
|
||||
from sqlalchemy.sql import and_
|
||||
|
||||
from eos.db import saveddata_meta
|
||||
from eos.db.saveddata.module import modules_table
|
||||
from eos.db.saveddata.drone import drones_table
|
||||
from eos.db.saveddata.cargo import cargo_table
|
||||
from eos.db.saveddata.implant import fitImplants_table
|
||||
from eos.types import Fit, Module, User, Booster, Drone, Implant, Character, DamagePattern
|
||||
from eos.types import Fit, Module, User, Booster, Drone, Cargo, Implant, Character, DamagePattern, TargetResists
|
||||
from eos.effectHandlerHelpers import HandledModuleList, HandledDroneList, \
|
||||
HandledImplantBoosterList, HandledProjectedModList, HandledProjectedDroneList, \
|
||||
HandledProjectedFitList
|
||||
HandledProjectedFitList, HandledCargoList
|
||||
|
||||
fits_table = Table("fits", saveddata_meta,
|
||||
Column("ID", Integer, primary_key = True),
|
||||
Column("ownerID", ForeignKey("users.ID"), nullable = True, index = True),
|
||||
@@ -36,7 +38,11 @@ fits_table = Table("fits", saveddata_meta,
|
||||
Column("name", String, nullable = False),
|
||||
Column("timestamp", Integer, nullable = False),
|
||||
Column("characterID", ForeignKey("characters.ID"), nullable = True),
|
||||
Column("damagePatternID", ForeignKey("damagePatterns.ID"), nullable=True))
|
||||
Column("damagePatternID", ForeignKey("damagePatterns.ID"), nullable=True),
|
||||
Column("booster", Boolean, nullable = False, index = True, default = 0),
|
||||
Column("targetResistsID", ForeignKey("targetResists.ID"), nullable=True),
|
||||
Column("modeID", Integer, nullable=True),
|
||||
)
|
||||
|
||||
projectedFits_table = Table("projectedFits", saveddata_meta,
|
||||
Column("sourceID", ForeignKey("fits.ID"), primary_key = True),
|
||||
@@ -52,6 +58,8 @@ mapper(Fit, fits_table,
|
||||
"_Fit__boosters" : relation(Booster, collection_class = HandledImplantBoosterList, cascade='all, delete, delete-orphan', single_parent=True),
|
||||
"_Fit__drones" : relation(Drone, collection_class = HandledDroneList, cascade='all, delete, delete-orphan', single_parent=True,
|
||||
primaryjoin = and_(drones_table.c.fitID == fits_table.c.ID, drones_table.c.projected == False)),
|
||||
"_Fit__cargo" : relation(Cargo, collection_class = HandledCargoList, cascade='all, delete, delete-orphan', single_parent=True,
|
||||
primaryjoin = and_(cargo_table.c.fitID == fits_table.c.ID)),
|
||||
"_Fit__projectedDrones" : relation(Drone, collection_class = HandledProjectedDroneList, cascade='all, delete, delete-orphan', single_parent=True,
|
||||
primaryjoin = and_(drones_table.c.fitID == fits_table.c.ID, drones_table.c.projected == True)),
|
||||
"_Fit__implants" : relation(Implant, collection_class = HandledImplantBoosterList, cascade='all, delete, delete-orphan', single_parent=True,
|
||||
@@ -60,6 +68,7 @@ mapper(Fit, fits_table,
|
||||
secondary = fitImplants_table),
|
||||
"_Fit__character" : relation(Character, backref = "fits"),
|
||||
"_Fit__damagePattern" : relation(DamagePattern),
|
||||
"_Fit__targetResists" : relation(TargetResists),
|
||||
"_Fit__projectedFits" : relation(Fit,
|
||||
primaryjoin = projectedFits_table.c.victimID == fits_table.c.ID,
|
||||
secondaryjoin = fits_table.c.ID == projectedFits_table.c.sourceID,
|
||||
|
||||
0
eos/db/saveddata/fleet.py
Executable file → Normal file
0
eos/db/saveddata/fleet.py
Executable file → Normal file
0
eos/db/saveddata/implant.py
Executable file → Normal file
0
eos/db/saveddata/implant.py
Executable file → Normal file
0
eos/db/saveddata/miscData.py
Executable file → Normal file
0
eos/db/saveddata/miscData.py
Executable file → Normal file
0
eos/db/saveddata/module.py
Executable file → Normal file
0
eos/db/saveddata/module.py
Executable file → Normal file
0
eos/db/saveddata/price.py
Executable file → Normal file
0
eos/db/saveddata/price.py
Executable file → Normal file
64
eos/db/saveddata/queries.py
Executable file → Normal file
64
eos/db/saveddata/queries.py
Executable file → Normal file
@@ -19,8 +19,9 @@
|
||||
|
||||
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
|
||||
from eos.types import User, Character, Fit, Price, DamagePattern, Fleet, MiscData, Wing, Squad, TargetResists
|
||||
from eos.db.saveddata.fleet import squadmembers_table
|
||||
from eos.db.saveddata.fit import projectedFits_table
|
||||
from sqlalchemy.sql import and_
|
||||
import eos.config
|
||||
|
||||
@@ -248,6 +249,29 @@ def getFitsWithShip(shipID, ownerID=None, where=None, eager=None):
|
||||
raise TypeError("ShipID must be integer")
|
||||
return fits
|
||||
|
||||
def getBoosterFits(ownerID=None, where=None, eager=None):
|
||||
"""
|
||||
Get all the fits that are flagged as a boosting ship
|
||||
If no user is passed, do this for all users.
|
||||
"""
|
||||
|
||||
if ownerID is not None and not isinstance(ownerID, int):
|
||||
raise TypeError("OwnerID must be integer")
|
||||
filter = Fit.booster == 1
|
||||
if ownerID is not None:
|
||||
filter = and_(filter, Fit.ownerID == ownerID)
|
||||
|
||||
filter = processWhere(filter, where)
|
||||
eager = processEager(eager)
|
||||
with sd_lock:
|
||||
fits = saveddata_session.query(Fit).options(*eager).filter(filter).all()
|
||||
return fits
|
||||
|
||||
def countAllFits():
|
||||
with sd_lock:
|
||||
count = saveddata_session.query(Fit).count()
|
||||
return count
|
||||
|
||||
def countFitsWithShip(shipID, ownerID=None, where=None, eager=None):
|
||||
"""
|
||||
Get all the fits using a certain ship.
|
||||
@@ -289,6 +313,12 @@ def getPrice(typeID):
|
||||
raise TypeError("Need integer as argument")
|
||||
return price
|
||||
|
||||
def clearPrices():
|
||||
with sd_lock:
|
||||
deleted_rows = saveddata_session.query(Price).delete()
|
||||
commit()
|
||||
return deleted_rows
|
||||
|
||||
def getMiscData(field):
|
||||
if isinstance(field, basestring):
|
||||
with sd_lock:
|
||||
@@ -303,6 +333,12 @@ def getDamagePatternList(eager=None):
|
||||
patterns = saveddata_session.query(DamagePattern).options(*eager).all()
|
||||
return patterns
|
||||
|
||||
def getTargetResistsList(eager=None):
|
||||
eager = processEager(eager)
|
||||
with sd_lock:
|
||||
patterns = saveddata_session.query(TargetResists).options(*eager).all()
|
||||
return patterns
|
||||
|
||||
@cachedQuery(DamagePattern, 1, "lookfor")
|
||||
def getDamagePattern(lookfor, eager=None):
|
||||
if isinstance(lookfor, int):
|
||||
@@ -321,6 +357,24 @@ def getDamagePattern(lookfor, eager=None):
|
||||
raise TypeError("Need integer or string as argument")
|
||||
return pattern
|
||||
|
||||
@cachedQuery(TargetResists, 1, "lookfor")
|
||||
def getTargetResists(lookfor, eager=None):
|
||||
if isinstance(lookfor, int):
|
||||
if eager is None:
|
||||
with sd_lock:
|
||||
pattern = saveddata_session.query(TargetResists).get(lookfor)
|
||||
else:
|
||||
eager = processEager(eager)
|
||||
with sd_lock:
|
||||
pattern = saveddata_session.query(TargetResists).options(*eager).filter(TargetResists.ID == lookfor).first()
|
||||
elif isinstance(lookfor, basestring):
|
||||
eager = processEager(eager)
|
||||
with sd_lock:
|
||||
pattern = saveddata_session.query(TargetResists).options(*eager).filter(TargetResists.name == lookfor).first()
|
||||
else:
|
||||
raise TypeError("Need integer or string as argument")
|
||||
return pattern
|
||||
|
||||
def searchFits(nameLike, where=None, eager=None):
|
||||
if not isinstance(nameLike, basestring):
|
||||
raise TypeError("Need string as argument")
|
||||
@@ -343,6 +397,14 @@ def getSquadsIDsWithFitID(fitID):
|
||||
else:
|
||||
raise TypeError("Need integer as argument")
|
||||
|
||||
def getProjectedFits(fitID):
|
||||
if isinstance(fitID, int):
|
||||
with sd_lock:
|
||||
filter = and_(projectedFits_table.c.sourceID == fitID, Fit.ID == projectedFits_table.c.victimID)
|
||||
fits = saveddata_session.query(Fit).filter(filter).all()
|
||||
return fits
|
||||
else:
|
||||
raise TypeError("Need integer as argument")
|
||||
|
||||
def add(stuff):
|
||||
with sd_lock:
|
||||
|
||||
0
eos/db/saveddata/skill.py
Executable file → Normal file
0
eos/db/saveddata/skill.py
Executable file → Normal file
35
eos/db/saveddata/targetResists.py
Normal file
35
eos/db/saveddata/targetResists.py
Normal file
@@ -0,0 +1,35 @@
|
||||
#===============================================================================
|
||||
# Copyright (C) 2014 Ryan Holmes
|
||||
#
|
||||
# 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, ForeignKey, String
|
||||
from sqlalchemy.orm import mapper
|
||||
|
||||
from eos.db import saveddata_meta
|
||||
from eos.types import TargetResists
|
||||
|
||||
targetResists_table = Table("targetResists", saveddata_meta,
|
||||
Column("ID", Integer, primary_key = True),
|
||||
Column("name", String),
|
||||
Column("emAmount", Float),
|
||||
Column("thermalAmount", Float),
|
||||
Column("kineticAmount", Float),
|
||||
Column("explosiveAmount", Float),
|
||||
Column("ownerID", ForeignKey("users.ID"), nullable=True))
|
||||
|
||||
mapper(TargetResists, targetResists_table)
|
||||
0
eos/db/saveddata/user.py
Executable file → Normal file
0
eos/db/saveddata/user.py
Executable file → Normal file
0
eos/db/util.py
Executable file → Normal file
0
eos/db/util.py
Executable file → Normal file
40
eos/effectHandlerHelpers.py
Executable file → Normal file
40
eos/effectHandlerHelpers.py
Executable file → Normal file
@@ -187,6 +187,46 @@ class HandledDroneList(HandledList):
|
||||
|
||||
return d
|
||||
|
||||
class HandledCargoList(HandledList):
|
||||
# shameless copy of HandledDroneList
|
||||
# I have no idea what this does, but I needed it
|
||||
# @todo: investigate this
|
||||
def find(self, item):
|
||||
for d in self:
|
||||
if d.item == item:
|
||||
yield d
|
||||
|
||||
def findFirst(self, item):
|
||||
for d in self.find(item):
|
||||
return d
|
||||
|
||||
def append(self, cargo):
|
||||
list.append(self, cargo)
|
||||
|
||||
def remove(self, cargo):
|
||||
HandledList.remove(self, cargo)
|
||||
|
||||
def appendItem(self, item, qty = 1):
|
||||
if qty < 1: ValueError("Amount of cargo to add should be >= 1")
|
||||
d = self.findFirst(item)
|
||||
|
||||
if d is None:
|
||||
d = eos.types.Cargo(item)
|
||||
self.append(d)
|
||||
|
||||
d.qty += qty
|
||||
return d
|
||||
|
||||
def removeItem(self, item, qty):
|
||||
if qty < 1: ValueError("Amount of cargo to remove should be >= 1")
|
||||
d = self.findFirst(item)
|
||||
if d is None: return
|
||||
d.qty -= qty
|
||||
if d.qty <= 0:
|
||||
self.remove(d)
|
||||
return None
|
||||
|
||||
return d
|
||||
|
||||
class HandledImplantBoosterList(HandledList):
|
||||
def __init__(self):
|
||||
|
||||
0
eos/effects/__init__.py
Executable file → Normal file
0
eos/effects/__init__.py
Executable file → Normal file
2
eos/effects/accerationcontrolcapneedbonuspostpercentcapacitorneedlocationshipgroupafterburner.py
Executable file → Normal file
2
eos/effects/accerationcontrolcapneedbonuspostpercentcapacitorneedlocationshipgroupafterburner.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# accerationControlCapNeedBonusPostPercentCapacitorNeedLocationShipGroupAfterburner
|
||||
#
|
||||
# Used by:
|
||||
# Modules named like: Dynamic Fuel Valve (8 of 8)
|
||||
type = "passive"
|
||||
|
||||
2
eos/effects/accerationcontrolskillabmwdspeedboost.py
Executable file → Normal file
2
eos/effects/accerationcontrolskillabmwdspeedboost.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# accerationControlSkillAb&MwdSpeedBoost
|
||||
#
|
||||
# Used by:
|
||||
# Implant: Zor's Custom Navigation Hyper-Link
|
||||
# Skill: Acceleration Control
|
||||
|
||||
2
eos/effects/accerationcontrolspeedfbonuspostpercentspeedfactorlocationshipgroupafterburner.py
Executable file → Normal file
2
eos/effects/accerationcontrolspeedfbonuspostpercentspeedfactorlocationshipgroupafterburner.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# accerationControlSpeedFBonusPostPercentSpeedFactorLocationShipGroupAfterburner
|
||||
#
|
||||
# Used by:
|
||||
# Implants named like: Eifyr and Co. 'Rogue' Acceleration Control AC (6 of 6)
|
||||
type = "passive"
|
||||
|
||||
3
eos/effects/accessdifficultybonusmodifierrequiringarchaelogy.py
Executable file → Normal file
3
eos/effects/accessdifficultybonusmodifierrequiringarchaelogy.py
Executable file → Normal file
@@ -1,6 +1,9 @@
|
||||
# accessDifficultyBonusModifierRequiringArchaelogy
|
||||
#
|
||||
# Used by:
|
||||
# Modules named like: Emission Scope Sharpener (8 of 8)
|
||||
# Implant: Poteque 'Prospector' Archaeology AC-905
|
||||
# Implant: Poteque 'Prospector' Environmental Analysis EY-1005
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
fit.modules.filteredItemIncrease(lambda module: module.item.requiresSkill("Archaeology"),
|
||||
|
||||
3
eos/effects/accessdifficultybonusmodifierrequiringhacking.py
Executable file → Normal file
3
eos/effects/accessdifficultybonusmodifierrequiringhacking.py
Executable file → Normal file
@@ -1,5 +1,8 @@
|
||||
# accessDifficultyBonusModifierRequiringHacking
|
||||
#
|
||||
# Used by:
|
||||
# Modules named like: Memetic Algorithm Bank (8 of 8)
|
||||
# Implant: Poteque 'Prospector' Environmental Analysis EY-1005
|
||||
# Implant: Poteque 'Prospector' Hacking HC-905
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
|
||||
2
eos/effects/adaptivearmorhardener.py
Executable file → Normal file
2
eos/effects/adaptivearmorhardener.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# adaptiveArmorHardener
|
||||
#
|
||||
# Used by:
|
||||
# Module: Reactive Armor Hardener
|
||||
type = "active"
|
||||
|
||||
3
eos/effects/addtosignatureradius2.py
Executable file → Normal file
3
eos/effects/addtosignatureradius2.py
Executable file → Normal file
@@ -1,4 +1,7 @@
|
||||
# addToSignatureRadius2
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Missile Launcher Bomb (2 of 2)
|
||||
# Modules from group: Shield Extender (37 of 37)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
|
||||
2
eos/effects/advanceddroneinterfacingmaxgroupdcuskilllevel.py
Executable file → Normal file
2
eos/effects/advanceddroneinterfacingmaxgroupdcuskilllevel.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# advancedDroneInterfacingMaxGroupDCUSkillLevel
|
||||
#
|
||||
# Used by:
|
||||
# Skill: Advanced Drone Interfacing
|
||||
type = "passive"
|
||||
|
||||
2
eos/effects/afterburnerdurationbonuspostpercentdurationlocationshipmodulesrequiringafterburner.py
Executable file → Normal file
2
eos/effects/afterburnerdurationbonuspostpercentdurationlocationshipmodulesrequiringafterburner.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# afterburnerDurationBonusPostPercentDurationLocationShipModulesRequiringAfterburner
|
||||
#
|
||||
# Used by:
|
||||
# Implants named like: Eifyr and Co. 'Rogue' Afterburner AB (6 of 6)
|
||||
# Implant: Zor's Custom Navigation Link
|
||||
|
||||
8
eos/effects/agilitymultipliereffect.py
Executable file → Normal file
8
eos/effects/agilitymultipliereffect.py
Executable file → Normal file
@@ -1,7 +1,9 @@
|
||||
# agilityMultiplierEffect
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Inertia Stabilizer (12 of 12)
|
||||
# Modules from group: Nanofiber Internal Structure (14 of 14)
|
||||
# Modules from group: Reinforced Bulkhead (12 of 12)
|
||||
# Modules from group: Inertial Stabilizer (7 of 7)
|
||||
# Modules from group: Nanofiber Internal Structure (7 of 7)
|
||||
# Modules from group: Reinforced Bulkhead (8 of 8)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
fit.ship.boostItemAttr("agility",
|
||||
|
||||
2
eos/effects/agilitymultipliereffectpassive.py
Executable file → Normal file
2
eos/effects/agilitymultipliereffectpassive.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# agilityMultiplierEffectPassive
|
||||
#
|
||||
# Used by:
|
||||
# Modules named like: Polycarbon Engine Housing (8 of 8)
|
||||
type = "passive"
|
||||
|
||||
2
eos/effects/ammofallofmultiplier.py
Executable file → Normal file
2
eos/effects/ammofallofmultiplier.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# ammoFallofMultiplier
|
||||
#
|
||||
# Used by:
|
||||
# Charges from group: Advanced Artillery Ammo (6 of 6)
|
||||
# Charges from group: Advanced Autocannon Ammo (6 of 6)
|
||||
|
||||
4
eos/effects/ammoinfluencecapneed.py
Executable file → Normal file
4
eos/effects/ammoinfluencecapneed.py
Executable file → Normal file
@@ -1,5 +1,7 @@
|
||||
# ammoInfluenceCapNeed
|
||||
#
|
||||
# Used by:
|
||||
# Items from category: Charge (458 of 824)
|
||||
# Items from category: Charge (458 of 829)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
# Dirty hack to work around cap charges setting cap booster
|
||||
|
||||
4
eos/effects/ammoinfluencerange.py
Executable file → Normal file
4
eos/effects/ammoinfluencerange.py
Executable file → Normal file
@@ -1,5 +1,7 @@
|
||||
# ammoInfluenceRange
|
||||
#
|
||||
# Used by:
|
||||
# Items from category: Charge (559 of 824)
|
||||
# Items from category: Charge (559 of 829)
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
module.multiplyItemAttr("maxRange", module.getModifiedChargeAttr("weaponRangeMultiplier"))
|
||||
6
eos/effects/ammospeedmultiplier.py
Executable file → Normal file
6
eos/effects/ammospeedmultiplier.py
Executable file → Normal file
@@ -1,7 +1,9 @@
|
||||
# ammoSpeedMultiplier
|
||||
#
|
||||
# Used by:
|
||||
# Charges from group: Festival Charges (4 of 4)
|
||||
# Charges from group: Festival Charges (8 of 8)
|
||||
# Charges from group: Interdiction Probe (2 of 2)
|
||||
# Charges from group: Survey Probe (3 of 3)
|
||||
# Charge: Warp Disrupt Probe
|
||||
type = "passive"
|
||||
def handler(fit, module, context):
|
||||
module.multiplyItemAttr("speed", module.getModifiedChargeAttr("speedMultiplier") or 1)
|
||||
|
||||
2
eos/effects/ammotrackingmultiplier.py
Executable file → Normal file
2
eos/effects/ammotrackingmultiplier.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# ammoTrackingMultiplier
|
||||
#
|
||||
# Used by:
|
||||
# Charges from group: Advanced Artillery Ammo (6 of 6)
|
||||
# Charges from group: Advanced Autocannon Ammo (6 of 6)
|
||||
|
||||
4
eos/effects/angelsetbonus.py
Executable file → Normal file
4
eos/effects/angelsetbonus.py
Executable file → Normal file
@@ -1,5 +1,7 @@
|
||||
# angelsetbonus
|
||||
#
|
||||
# Used by:
|
||||
# Implants named like: Halo (12 of 12)
|
||||
# Implants named like: grade Halo (18 of 18)
|
||||
runTime = "early"
|
||||
type = "passive"
|
||||
def handler(fit, implant, context):
|
||||
|
||||
2
eos/effects/antiwarpscramblingpassive.py
Executable file → Normal file
2
eos/effects/antiwarpscramblingpassive.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# antiWarpScramblingPassive
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Warp Core Stabilizer (8 of 8)
|
||||
type = "passive"
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
# archaeologySkillVirusBonus
|
||||
#
|
||||
# Used by:
|
||||
# Modules named like: Emission Scope Sharpener (8 of 8)
|
||||
# Implant: Poteque 'Prospector' Archaeology AC-905
|
||||
# Implant: Poteque 'Prospector' Environmental Analysis EY-1005
|
||||
# Skill: Archaeology
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
|
||||
2
eos/effects/armorallrepairsystemsamountbonuspassive.py
Executable file → Normal file
2
eos/effects/armorallrepairsystemsamountbonuspassive.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# armorAllRepairSystemsAmountBonusPassive
|
||||
#
|
||||
# Used by:
|
||||
# Implants named like: Exile Booster (4 of 4)
|
||||
type = "passive"
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# armorDamageAmountBonusCapitalArmorRepairers
|
||||
#
|
||||
# Used by:
|
||||
# Modules named like: Auxiliary Nano Pump (8 of 8)
|
||||
type = "passive"
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# armoredSquadronCommand
|
||||
#
|
||||
# Used by:
|
||||
# Skill: Armored Warfare Specialist
|
||||
runTime = "early"
|
||||
|
||||
2
eos/effects/armoredwarfaremindlink.py
Executable file → Normal file
2
eos/effects/armoredwarfaremindlink.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# armoredWarfareMindlink
|
||||
#
|
||||
# Used by:
|
||||
# Implant: Armored Warfare Mindlink
|
||||
# Implant: Federation Navy Warfare Mindlink
|
||||
|
||||
2
eos/effects/armorhpbonusadd.py
Executable file → Normal file
2
eos/effects/armorhpbonusadd.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# armorHPBonusAdd
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Armor Reinforcer (57 of 57)
|
||||
type = "passive"
|
||||
|
||||
2
eos/effects/armorhpbonusaddpassive.py
Executable file → Normal file
2
eos/effects/armorhpbonusaddpassive.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# armorHPBonusAddPassive
|
||||
#
|
||||
# Used by:
|
||||
# Subsystems from group: Defensive Systems (16 of 16)
|
||||
type = "passive"
|
||||
|
||||
2
eos/effects/armorhpmultiply.py
Executable file → Normal file
2
eos/effects/armorhpmultiply.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# armorHPMultiply
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Armor Coating (202 of 202)
|
||||
# Modules from group: Armor Plating Energized (187 of 187)
|
||||
|
||||
2
eos/effects/armorreinforcermassadd.py
Executable file → Normal file
2
eos/effects/armorreinforcermassadd.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# armorReinforcerMassAdd
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Armor Reinforcer (57 of 57)
|
||||
type = "passive"
|
||||
|
||||
2
eos/effects/armorrepair.py
Executable file → Normal file
2
eos/effects/armorrepair.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# armorRepair
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Armor Repair Unit (100 of 100)
|
||||
runTime = "late"
|
||||
|
||||
2
eos/effects/armorrepairprojectormaxrangebonus.py
Executable file → Normal file
2
eos/effects/armorrepairprojectormaxrangebonus.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# armorRepairProjectorMaxRangeBonus
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Augoror
|
||||
# Ship: Exequror
|
||||
|
||||
2
eos/effects/armortankinggang.py
Executable file → Normal file
2
eos/effects/armortankinggang.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# armorTankingGang
|
||||
#
|
||||
# Used by:
|
||||
# Skill: Armored Warfare
|
||||
type = "gang"
|
||||
|
||||
2
eos/effects/armortankinggang2.py
Executable file → Normal file
2
eos/effects/armortankinggang2.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# armorTankingGang2
|
||||
#
|
||||
# Used by:
|
||||
# Implant: Armored Warfare Mindlink
|
||||
# Implant: Federation Navy Warfare Mindlink
|
||||
|
||||
2
eos/effects/armorupgradesmasspenaltyreductionbonus.py
Executable file → Normal file
2
eos/effects/armorupgradesmasspenaltyreductionbonus.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# armorUpgradesMassPenaltyReductionBonus
|
||||
#
|
||||
# Used by:
|
||||
# Skill: Armor Layering
|
||||
type = "passive"
|
||||
|
||||
2
eos/effects/astrogeologyminingamountbonuspostpercentminingamountlocationshipmodulesrequiringmining.py
Executable file → Normal file
2
eos/effects/astrogeologyminingamountbonuspostpercentminingamountlocationshipmodulesrequiringmining.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# astrogeologyMiningAmountBonusPostPercentMiningAmountLocationShipModulesRequiringMining
|
||||
#
|
||||
# Used by:
|
||||
# Implants named like: Inherent Implants 'Highwall' Mining MX (3 of 3)
|
||||
# Implant: Michi's Excavation Augmentor
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# baseMaxScanDeviationModifierModuleOnline2None
|
||||
#
|
||||
# Used by:
|
||||
# Variations of module: Scan Pinpointing Array I (2 of 2)
|
||||
type = "passive"
|
||||
|
||||
2
eos/effects/basemaxscandeviationmodifierrequiringastrometrics.py
Executable file → Normal file
2
eos/effects/basemaxscandeviationmodifierrequiringastrometrics.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# baseMaxScanDeviationModifierRequiringAstrometrics
|
||||
#
|
||||
# Used by:
|
||||
# Implants named like: Poteque 'Prospector' Astrometric Pinpointing AP (3 of 3)
|
||||
# Skill: Astrometric Pinpointing
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# baseSensorStrengthModifierModule
|
||||
#
|
||||
# Used by:
|
||||
# Variations of module: Scan Rangefinding Array I (2 of 2)
|
||||
type = "passive"
|
||||
|
||||
4
eos/effects/basesensorstrengthmodifierrequiringastrometrics.py
Executable file → Normal file
4
eos/effects/basesensorstrengthmodifierrequiringastrometrics.py
Executable file → Normal file
@@ -1,7 +1,9 @@
|
||||
# baseSensorStrengthModifierRequiringAstrometrics
|
||||
#
|
||||
# Used by:
|
||||
# Modules from group: Scan Probe Launcher (4 of 7)
|
||||
# Implants named like: Low grade Virtue (5 of 6)
|
||||
# Implants named like: Poteque 'Prospector' Astrometric Rangefinding AR (3 of 3)
|
||||
# Implants named like: grade Virtue (10 of 12)
|
||||
# Modules named like: Gravity Capacitor Upgrade (8 of 8)
|
||||
# Skill: Astrometric Rangefinding
|
||||
# Skill: Astrometrics
|
||||
|
||||
2
eos/effects/bclargeenergyturretcapacitorneedbonus.py
Executable file → Normal file
2
eos/effects/bclargeenergyturretcapacitorneedbonus.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# bcLargeEnergyTurretCapacitorNeedBonus
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Oracle
|
||||
type = "passive"
|
||||
|
||||
2
eos/effects/bclargeenergyturretcpuneedbonus.py
Executable file → Normal file
2
eos/effects/bclargeenergyturretcpuneedbonus.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# bcLargeEnergyTurretCPUNeedBonus
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Oracle
|
||||
type = "passive"
|
||||
|
||||
2
eos/effects/bclargeenergyturretpowerneedbonus.py
Executable file → Normal file
2
eos/effects/bclargeenergyturretpowerneedbonus.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# bcLargeEnergyTurretPowerNeedBonus
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Oracle
|
||||
type = "passive"
|
||||
|
||||
2
eos/effects/bclargehybridturretcapacitorneedbonus.py
Executable file → Normal file
2
eos/effects/bclargehybridturretcapacitorneedbonus.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# bcLargeHybridTurretCapacitorNeedBonus
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Naga
|
||||
# Ship: Talos
|
||||
|
||||
2
eos/effects/bclargehybridturretcpuneedbonus.py
Executable file → Normal file
2
eos/effects/bclargehybridturretcpuneedbonus.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# bcLargeHybridTurretCPUNeedBonus
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Naga
|
||||
# Ship: Talos
|
||||
|
||||
2
eos/effects/bclargehybridturretpowerneedbonus.py
Executable file → Normal file
2
eos/effects/bclargehybridturretpowerneedbonus.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# bcLargeHybridTurretPowerNeedBonus
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Naga
|
||||
# Ship: Talos
|
||||
|
||||
2
eos/effects/bclargeprojectileturretcpuneedbonus.py
Executable file → Normal file
2
eos/effects/bclargeprojectileturretcpuneedbonus.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# bcLargeProjectileTurretCPUNeedBonus
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Tornado
|
||||
type = "passive"
|
||||
|
||||
2
eos/effects/bclargeprojectileturretpowerneedbonus.py
Executable file → Normal file
2
eos/effects/bclargeprojectileturretpowerneedbonus.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# bcLargeProjectileTurretPowerNeedBonus
|
||||
#
|
||||
# Used by:
|
||||
# Ship: Tornado
|
||||
type = "passive"
|
||||
|
||||
2
eos/effects/biologytimebonusfixed.py
Executable file → Normal file
2
eos/effects/biologytimebonusfixed.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# biologyTimeBonusFixed
|
||||
#
|
||||
# Used by:
|
||||
# Implants named like: Eifyr and Co. 'Alchemist' Biology BY (2 of 2)
|
||||
# Skill: Biology
|
||||
|
||||
2
eos/effects/blockaderunnercloakcpupercentbonus.py
Executable file → Normal file
2
eos/effects/blockaderunnercloakcpupercentbonus.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# blockadeRunnerCloakCpuPercentBonus
|
||||
#
|
||||
# Used by:
|
||||
# Ships from group: Blockade Runner (4 of 4)
|
||||
type = "passive"
|
||||
|
||||
2
eos/effects/boosterarmorhppenalty.py
Executable file → Normal file
2
eos/effects/boosterarmorhppenalty.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# boosterArmorHpPenalty
|
||||
#
|
||||
# Used by:
|
||||
# Implants from group: Booster (12 of 37)
|
||||
type = "boosterSideEffect"
|
||||
|
||||
2
eos/effects/boosterarmorrepairamountpenalty.py
Executable file → Normal file
2
eos/effects/boosterarmorrepairamountpenalty.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# boosterArmorRepairAmountPenalty
|
||||
#
|
||||
# Used by:
|
||||
# Implants from group: Booster (9 of 37)
|
||||
type = "boosterSideEffect"
|
||||
|
||||
2
eos/effects/boostercapacitorcapacitypenalty.py
Executable file → Normal file
2
eos/effects/boostercapacitorcapacitypenalty.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# boosterCapacitorCapacityPenalty
|
||||
#
|
||||
# Used by:
|
||||
# Implants named like: Blue Pill Booster (3 of 5)
|
||||
# Implants named like: Exile Booster (3 of 4)
|
||||
|
||||
2
eos/effects/boostermaxvelocitypenalty.py
Executable file → Normal file
2
eos/effects/boostermaxvelocitypenalty.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# boosterMaxVelocityPenalty
|
||||
#
|
||||
# Used by:
|
||||
# Implants from group: Booster (12 of 37)
|
||||
type = "boosterSideEffect"
|
||||
|
||||
2
eos/effects/boostermissileexplosioncloudpenaltyfixed.py
Executable file → Normal file
2
eos/effects/boostermissileexplosioncloudpenaltyfixed.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# boosterMissileExplosionCloudPenaltyFixed
|
||||
#
|
||||
# Used by:
|
||||
# Implants named like: Exile Booster (3 of 4)
|
||||
# Implants named like: Mindflood Booster (3 of 4)
|
||||
|
||||
2
eos/effects/boostermissileexplosionvelocitypenalty.py
Executable file → Normal file
2
eos/effects/boostermissileexplosionvelocitypenalty.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# boosterMissileExplosionVelocityPenalty
|
||||
#
|
||||
# Used by:
|
||||
# Implants named like: Blue Pill Booster (3 of 5)
|
||||
type = "boosterSideEffect"
|
||||
|
||||
2
eos/effects/boostermissilevelocitypenalty.py
Executable file → Normal file
2
eos/effects/boostermissilevelocitypenalty.py
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
# boosterMissileVelocityPenalty
|
||||
#
|
||||
# Used by:
|
||||
# Implants named like: Crash Booster (3 of 4)
|
||||
# Implants named like: X Instinct Booster (3 of 4)
|
||||
|
||||
6
eos/effects/boostermodifyboosterarmorpenalties.py
Executable file → Normal file
6
eos/effects/boostermodifyboosterarmorpenalties.py
Executable file → Normal file
@@ -1,6 +1,8 @@
|
||||
# boosterModifyBoosterArmorPenalties
|
||||
#
|
||||
# Used by:
|
||||
# Implants named like: Eifyr and Co. 'Alchemist' Nanite Control NC (2 of 2)
|
||||
# Implants named like: Low grade Edge (5 of 6)
|
||||
# Implants named like: Eifyr and Co. 'Alchemist' Neurotoxin Control NC (2 of 2)
|
||||
# Implants named like: grade Edge (10 of 12)
|
||||
# Skill: Neurotoxin Control
|
||||
type = "passive"
|
||||
def handler(fit, container, context):
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user