Compare commits

..

198 Commits

Author SHA1 Message Date
DarkPhoenix
edfd446e46 Update to 908326 2015-06-25 00:33:37 +03:00
DarkPhoenix
de0b03630a Bump version 2015-06-23 00:17:41 +03:00
DarkPhoenix
90a2a79d5b Add hecate effects, update database to 906843 2015-06-23 00:00:09 +03:00
DarkPhoenix
21efd6d06a CCP added faction 200mm plates back to the game 2015-06-22 22:22:35 +03:00
DarkPhoenix
ea288a6133 Update conversion scripts to use new scheme 2015-06-21 16:50:07 +03:00
blitzmann
23baaa7dba Merge branch 'master' of https://github.com/DarkFenX/Pyfa 2015-06-16 13:14:28 -04:00
blitzmann
8008c986d3 Fix #302 - Projected fit applying Tactical Destroyer mode effects on projectee 2015-06-16 13:14:16 -04:00
DarkPhoenix
b9efc919ea Add missing RHML rof effect 2015-06-16 16:53:21 +03:00
DarkPhoenix
3395f8ebe6 Bump for next development release 2015-06-02 23:43:16 +03:00
DarkPhoenix
1d45102100 Bump for a stable release 2015-06-02 23:32:16 +03:00
DarkPhoenix
1694d74afa Add Carnyx tiericide module upgrade/import paths 2015-06-02 23:27:08 +03:00
DarkPhoenix
9c9f1dcefa Get faction 200mm plates back 2015-06-02 19:37:32 +03:00
DarkPhoenix
a4ca2e90f9 Add effect which affects entosis duration on cap ships 2015-06-02 16:48:58 +03:00
DarkPhoenix
dbfcfd9acf Change expansion data in config and update database to 893722 2015-06-02 16:38:38 +03:00
DarkPhoenix
8c30ee3fd3 Merge branch 'master' into singularity 2015-05-28 15:21:28 +03:00
Anton Vorobyov
ca17d17232 Merge pull request #292 from wolfwood/master
fix issue copying fits with sqlalchemy 1.0
2015-05-28 15:17:02 +03:00
wolfwood
b78c0a5845 fix issue copying fits with sqlalchemy 1.0 2015-05-27 10:21:16 -07:00
DarkPhoenix
ef6e25bfce Merge branch 'master' into singularity 2015-05-27 14:55:12 +03:00
DarkPhoenix
e81f7eb765 Change validator requirement for owner ID
This fixes bug related to sqlalch 1.0
2015-05-27 14:54:37 +03:00
DarkPhoenix
26122f6da7 Add latest changes from Singularity 2015-05-21 16:44:39 +03:00
DarkPhoenix
cca7f1112a Revert "Merge branch 'master' into wx3"
This reverts commit 33a0c10650, reversing
changes made to 2077655694.

Reverting merges fucks up git, but oh well - we probably better merge stuff manually rather than fucking up master with wx3 which is apparently buggy
2015-04-30 19:47:15 +03:00
DarkPhoenix
c809a614f9 Revert "Move logging initialization back to pyfa.py"
This reverts commit d18cf7b3b0.

Reverting all wx3 commits in master
2015-04-30 19:39:11 +03:00
DarkPhoenix
2c366faa66 Revert "Remove setting locale"
This reverts commit 7606bded40.

Reverting all wx3 commits on master
2015-04-30 19:38:47 +03:00
DarkPhoenix
06252d761d Revert "Change the way we detect pyfa path"
This reverts commit bb8d5d0d65.

Reverting all wx3 commits in master
2015-04-30 19:38:18 +03:00
DarkPhoenix
bb8d5d0d65 Change the way we detect pyfa path
This ensures that it works even with frozen executable
2015-04-29 00:27:42 +03:00
DarkPhoenix
7606bded40 Remove setting locale
It causes issues with wx3 on windows
2015-04-28 23:49:11 +03:00
DarkPhoenix
daaf48d02a Add effect i should've added for mosaic release 2015-04-28 21:59:54 +03:00
DarkPhoenix
d18cf7b3b0 Move logging initialization back to pyfa.py 2015-04-28 21:59:14 +03:00
DarkPhoenix
33a0c10650 Merge branch 'master' into wx3 2015-04-28 21:53:27 +03:00
DarkPhoenix
2077655694 Bump version for next development release 2015-04-28 21:43:22 +03:00
DarkPhoenix
0dc3cbb7c7 Bump version for a stable release 2015-04-28 19:50:53 +03:00
Anton Vorobyov
a3c19f6f2b Merge pull request #271 from BlckKnght/fix_stagger
Fix stagger
2015-04-28 19:34:58 +03:00
DarkPhoenix
f97b037011 Forgot to save file for previous commit 2015-04-28 19:18:56 +03:00
DarkPhoenix
dd3dd799b2 Move loggin configuration to config temporarily 2015-04-28 19:17:50 +03:00
Anton Vorobyov
ac881ac371 Merge pull request #276 from kainz/master
Support fits exported from jEveAssets
2015-04-28 18:30:20 +03:00
DarkPhoenix
d734ccbf0d Add effect for entosis link and update effect comments 2015-04-28 18:24:25 +03:00
DarkPhoenix
024e0ad4f5 Support proper migration for ishukone scorp (which is skin for regular scorp now) 2015-04-28 18:19:58 +03:00
DarkPhoenix
545d98883a Update DB to mosaic 2015-04-28 18:06:03 +03:00
DarkPhoenix
742abc3250 Remove bunch of chinese skinned ships 2015-04-28 18:05:15 +03:00
DarkPhoenix
294e213ac2 Remove support for vanity ships which were converted into base hulls in game
We do not need any DB conversion for them because we converted them into base hull during import time. Also it breaks import of old posted EFT-style fits with removed skinned ships, but i can't say we care alot about this case
2015-04-28 18:01:06 +03:00
Bryon Roche
557f32ab91 Implement support for loading utf-16 XML.
Such XML is generated by software like jEveAssets's owned ships->fitting
export tool.

Without such detection, pyfa will go and try to import those as DNA
fits, with all the ensuing hilarity, thus the DNA import debug code as
well.
2015-04-22 05:05:48 -07:00
DarkPhoenix
e5430cac84 Do not apply ES bonus to weapon locus rigs 2015-04-20 15:07:19 +03:00
blitzmann
39c14b62fd Merge branch 'master' into wx3 2015-04-17 17:48:56 -04:00
DarkPhoenix
940035fa8c Fix market groups of civilian modules 2015-04-13 15:48:35 +03:00
blitzmann
5eaaaf070b Merge branch 'master' of https://github.com/DarkFenX/Pyfa 2015-04-08 23:44:51 -04:00
blitzmann
0bc9264c28 Fix #268 2015-04-08 23:43:56 -04:00
Steven Barker
cb1de9589e fix typo, pick a better stagger amount 2015-03-31 12:09:27 -07:00
Steven Barker
370e34cff9 Make staggerred modules with ammo work 2015-03-30 21:02:56 -07:00
Anton Vorobyov
28c3fc720f Merge pull request #249 from f-andrey/master
Update gpl.txt
2015-03-27 22:03:08 +03:00
DarkPhoenix
04b3a687fc Add new yacht to LIS category and add its render 2015-03-26 15:42:32 +03:00
DarkPhoenix
629f6e60a4 Mark as development 2015-03-26 15:35:05 +03:00
blitzmann
f801d7905c Update effect file headers, mark as stable 2015-03-24 16:30:40 -04:00
blitzmann
694a2a3d9b Fix #267 2015-03-23 21:21:38 -04:00
blitzmann
222888984a Update to 871030 SISI, also fix prep_data script for changes in Phobos / reverence 2015-03-23 18:00:38 -04:00
Ryan Holmes
bb96ecb647 Merge pull request #263 from OISumeko/master
Fix for #261
2015-02-22 23:51:04 -05:00
Cameron Grout
e082077dfc Updated None || 0 check to meet requested style
Updated for pull  request #263
2015-02-23 17:02:47 +13:00
blitzmann
a31769bde3 Remove problematic pyd files upon installation 2015-02-22 21:17:20 -05:00
Cameron Grout
be7e8be85b Fix for bug #261
Missile launchers do not have a "capacitorNeed" attribute (while other
capless weapon systems do), so getModifiedItemAttr will return None
rather than 0. Added a check for this.
2015-02-22 23:52:58 +13:00
DarkPhoenix
b16d2eae15 Bump for a next development release 2015-02-18 15:48:40 +03:00
DarkPhoenix
0ef05ffaf8 Bump version 2015-02-18 15:47:43 +03:00
DarkPhoenix
9ee7671a3c Update DB to 862956 2015-02-18 13:55:23 +03:00
DarkPhoenix
ca301f8d5b Fix svipul's sensor str effect on sharpshooter mode 2015-02-15 14:27:32 +03:00
blitzmann
471261275a Commit missing database 862583 2015-02-14 21:56:10 -05:00
blitzmann
55f2f3bfe8 Merge remote-tracking branch 'blitzmann/singularity' into singularity 2015-02-14 01:33:08 -05:00
blitzmann
3ce673d8af Merge remote-tracking branch 'origin/master' into singularity 2015-02-14 01:32:44 -05:00
blitzmann
3e2053b2dd Update 862583 sans database 2015-02-14 01:27:52 -05:00
DarkPhoenix
931e48d9a0 Fix ES effect affecting local modules 2015-02-13 22:09:38 +03:00
blitzmann
6c19f446be Sort import stage results 2015-02-09 22:44:33 -05:00
Ryan Holmes
d4842c2f8e Merge pull request #260 from blitzmann/importStage
Import stage, resolves #93
2015-02-09 22:25:01 -05:00
blitzmann
dc77ee9353 Add import stage to goTo logic, and fixed a bug with search initiating a goTo to the last hx item 2015-02-09 22:05:56 -05:00
blitzmann
6d29fd6bc1 Simplified stage 3 history handling. Fixes:
* Hitting back button after creating/copying new fit breaks stage
* Importing more than 1 fit while on the search stage and hitting the back button breaks stage
2015-02-08 21:12:56 -05:00
blitzmann
cbcd5ccca5 Fixed bugs:
* Importing 1 fit would open stage3 of that ship, but add incorrect history data.
* Deleting fit from search stage caused blank stage most times, fixed this.
2015-02-08 20:29:54 -05:00
blitzmann
30d2ab23ad Initial support for import stage in shipBrowser. Few bugs, see issue #93 2015-02-08 16:14:52 -05:00
blitzmann
f4f028b843 Fix #258: broken EFT cfg import 2015-02-07 22:59:55 -05:00
blitzmann
ef62f102bc Fix #256 2015-02-07 21:15:23 -05:00
blitzmann
7b8bb79cbe Fix error when loading previous fits that no longer exist in DB 2015-02-03 15:23:31 -05:00
blitzmann
3a26790109 If in debug, publish ship mode items (makes it easy to find in market and look at stats).
Tweak effectsUsedBy.py to publish all modes in group rather than individually listing them.
2015-02-03 14:16:09 -05:00
blitzmann
c861adc5ed Sanity check to importing effect handler
Tweaks to opening effect files when in debug (support for OS X and Linux)
2015-02-03 14:07:21 -05:00
blitzmann
36a3ac70b6 Removed unneeded variable in effect file 2015-01-26 23:51:46 -05:00
blitzmann
54d1b35ce7 Fix path to point to actual gamedata - useful when importing from terminal and has no effect on pyfa's import (as it is specifically provided in pyfa/config.py) 2015-01-25 11:09:43 -05:00
blitzmann
675213f20f Fix #252 2015-01-21 11:18:58 -05:00
blitzmann
3a9e1f8b85 Fix XML export 2015-01-17 13:41:49 -05:00
blitzmann
e520758334 dev version 2015-01-15 12:29:16 -05:00
blitzmann
073309de0a Increment database version and bump to 1.8.1 stable 2015-01-15 12:08:35 -05:00
DarkPhoenix
1bce724190 Do not write non-ascii comments to effect files 2015-01-15 12:17:30 +03:00
blitzmann
2c47d0758e Bump to stable 2015-01-14 21:31:28 -05:00
blitzmann
8f7ae4b00c Remove Chinese ships from effect "used by" header 2015-01-14 21:04:12 -05:00
DarkPhoenix
f11f3bfb79 Implement recon effect changes 2015-01-15 02:35:22 +03:00
DarkPhoenix
68703f3db5 Put old innerzone names back
To make sure EFT fittings with these are imported & converted properly
2015-01-14 23:03:14 +03:00
Andrey
ad18560412 Update gpl.txt
Fix license text http://www.gnu.org/licenses/gpl-3.0.txt
2015-01-14 12:27:47 +03:00
blitzmann
d3def54b5a Conversion pack for Proteus Module Tiericide + conversion helper script 2015-01-13 22:37:20 -05:00
DarkPhoenix
27d72ed909 Add vanity ship changes from proteus 2015-01-14 03:22:28 +03:00
DarkPhoenix
55e45b6bc1 Remove published chinese ships from visibility 2015-01-14 03:15:35 +03:00
DarkPhoenix
252f56732b Merge branch 'master' of github.com:DarkFenX/Pyfa 2015-01-14 03:00:15 +03:00
DarkPhoenix
d52e88cdaa Update database to proteus & add tiericide item conversions 2015-01-14 02:59:15 +03:00
blitzmann
371e33764e Ammo name tooltip added to charge icon 2015-01-13 17:26:56 -05:00
blitzmann
9b8b7aba07 Add module state information to state tooltip 2015-01-12 23:37:40 -05:00
blitzmann
0a6274474e Fixes #204 2015-01-10 21:53:30 -05:00
Ryan Holmes
0ff69068c0 Merge pull request #241 from cockroach/master
Make tab tooltips optional
2015-01-10 20:13:35 -06:00
DarkPhoenix
731477b366 Open fit upon importing 2015-01-11 00:43:05 +03:00
Anton Vorobyov
0295f04ec4 Merge pull request #243 from blitzmann/issue-156
Fix #156
2015-01-10 18:21:30 +03:00
blitzmann
059af217aa Fix #246 2015-01-08 15:04:22 -05:00
Ryan Holmes
2a391fa38b Merge pull request #242 from blitzmann/issue-233
Fix #233
2015-01-08 13:26:26 -06:00
Ryan Holmes
88b1426fe0 Merge pull request #232 from blitzmann/progress
Port custom wait dialog to wx.ProgressDialog
2015-01-08 12:15:05 -06:00
blitzmann
07da5aa861 Resolve #245 - Adding tooltips to fitting columns 2015-01-08 12:39:16 -05:00
blitzmann
192d6f4605 Fix #156 2015-01-05 22:50:33 -05:00
blitmann
487f65d62b Fix #233 2015-01-04 17:19:53 -06:00
Stefan Ott
c202aefd2e Reverted accidentally committed change 2015-01-02 17:06:26 +01:00
Stefan Ott
0ed91e4079 Fixed code formatting 2015-01-02 17:04:10 +01:00
Stefan Ott
9c2a667635 Made tab tooltips optional 2015-01-02 16:55:05 +01:00
blitzmann
19579fb087 Implement middle click to offline modules 2014-12-31 20:18:16 -05:00
blitzmann
ea77e6851e Fix #238 2014-12-31 20:07:36 -05:00
blitzmann
1c3f9ccf5b Fix #240 2014-12-31 19:57:10 -05:00
blitzmann
e42671fbec Workaround for seg fault (see comments in pull request # 232) 2014-12-31 16:20:25 -05:00
blitzmann
18c86daea6 Do not include rigs in skill requirement checks 2014-12-30 21:08:55 -05:00
blitzmann
c59b818677 Add wx.ProgressDialog to HTML export, along with some documentation and silent try-except in HTML export 2014-12-19 00:13:06 -05:00
Ryan Holmes
71bf1556a1 Fix column name in upgrade3 migration script 2014-12-19 00:02:39 -05:00
blitzmann
26e50f2e8a Implement ProgressDialog for fit file imports (EVE XML / EFT cfg).
To make it simpler, changed the way fits are imported and saved from a per-file basis (process file->save fits->process file->save fits) to a per-batch basis (process file->process file -> save all fits).
2014-12-17 21:36:42 -05:00
blitzmann
25e30672fe Start conversion of various wait dialogs to wx.ProgresDialog. Implemented new wx.ProgresDialog for fitting backup 2014-12-15 20:01:03 -05:00
DarkPhoenix
e8268633e3 Merge branch 'master' into wx3
Used code from the master on conflicts
2014-12-15 15:45:33 +03:00
blitzmann
1b3c058eab Put XML export in a try-except block so that a failed export of 1 fit doesn't crash the whole process 2014-12-13 20:12:24 -05:00
blitzmann
adcae42ae7 Goodbye CREST support, we hardly used ya! (close #201) 2014-12-13 19:03:22 -05:00
blitzmann
238712e62c Add consumption info for siege/cyno module in misc column (resolves #219) 2014-12-13 18:39:06 -05:00
Ryan Holmes
f2b959895e Merge pull request #227 from unpoetical/master
Show amount over limit on pg/cpu/drone displays
2014-12-12 19:04:41 -05:00
blitzmann
ffb7719937 Fix #228 - missing Heretic effect 2014-12-12 18:49:00 -05:00
DarkPhoenix
3c1bf22e87 Merge branch 'master' into wx3 2014-12-12 14:42:25 +03:00
unpoetical
e0488dce4f Update powergrid, CPU, drone bandwidth, and drone bay displays to show remaining units so I don't have to do math. Could affect other gauge displays? 2014-12-11 22:15:50 -08:00
blitzmann
88074c8516 Fix fonts and lag with OS X 2014-12-11 23:25:44 -05:00
blitzmann
359840aee8 bump dev 2014-12-11 23:13:04 -05:00
blitzmann
77e3a0f666 Bump Stable 2014-12-11 14:39:01 -05:00
blitzmann
3d4eef2466 Fix #197, again 2014-12-11 11:34:21 -05:00
blitzmann
663cf7104c Fix #226, as well as another bug with coloring rack that had too many modules 2014-12-11 10:37:07 -05:00
blitzmann
0d6a55dcb6 Fix #224 2014-12-10 22:09:46 -05:00
blitzmann
85608616dd readjust some mode logic 2014-12-10 22:04:12 -05:00
blitzmann
d5ce666d8d Fix #225 - set mode whenever the ship is set. 2014-12-10 21:54:26 -05:00
blitzmann
2bff11e5ab bump dev 2014-12-09 19:31:01 -05:00
blitzmann
5adaaac75e Bump release 2014-12-09 18:50:34 -05:00
blitzmann
a49269b759 Edit effect headers and fix effects script 2014-12-09 18:49:40 -05:00
blitzmann
a96efaee1a Revert "Bump release", forgot effect headers 2014-12-09 18:49:10 -05:00
blitzmann
299de38bf6 Bump release 2014-12-09 18:37:24 -05:00
DarkPhoenix
b29019f0a7 Restore old race detection mechanism, but new has priority over it
Few unique ships still have no factionID
2014-12-10 01:13:58 +03:00
DarkPhoenix
da15b63831 Fix race detection 2014-12-10 01:01:51 +03:00
DarkPhoenix
20b2f1e5fc Merge branch 'singularity' 2014-12-09 23:39:57 +03:00
blitzmann
f1cdabf37c Fix bullets in traits 2014-12-08 23:10:55 -05:00
blitzmann
94e1c7aba3 Fix more bindings 2014-12-08 15:10:45 -05:00
blitzmann
797db36a42 Fix menu spawning when no fit open 2014-12-08 12:26:51 -05:00
blitzmann
ac18c58a0a fix menu bindings 2014-12-08 12:12:50 -05:00
Anton Vorobyov
281850d7df Merge pull request #214 from blitzmann/singularity 2014-12-08 03:05:04 +03:00
blitzmann
2e460adbc9 Add drone volleys 2014-12-04 21:08:41 -05:00
blitzmann
5660b2b8ed Add missing icons 2014-12-02 18:57:33 -05:00
blitzmann
de9fbd672f Fix scripts for t3 tactical modes 2014-12-02 18:33:59 -05:00
blitzmann
85029f6be8 Add mode to blanks list to avoid exception in module operations 2014-12-02 14:52:56 -05:00
blitzmann
337db326fd Add Mode and separation to fitting list.
Todo: A few exceptions are thrown when trying to remove mode via double click, spawn context menu, move to a different position, etc. All simply because Mode is not a Module. Will need to add try-except blocks to cover these instances
2014-12-02 14:33:47 -05:00
blitzmann
795230dae6 Quick fix for game version bug when running jsonToSql 2014-12-02 12:53:02 -05:00
blitzmann
022a929399 Fix initial mode assignment 2014-12-02 12:31:10 -05:00
blitzmann
b64238634a Merge branch 'master' into singularity
Conflicts:
	gui/builtinContextMenus/__init__.py
2014-12-02 02:50:27 -05:00
blitzmann
4b0e0300ad Fix path for .git directory 2014-12-02 02:48:50 -05:00
blitzmann
7762bb365f Set debug back to False 2014-12-02 02:45:46 -05:00
blitzmann
dfec7d8fa2 Added new skinned ships to conversions 2014-12-02 02:42:05 -05:00
blitzmann
5c5ec60efd Bowhead effects 2014-12-02 02:28:54 -05:00
blitzmann
2a7e35ff6f Fix exception with non-t3-dessys context menu 2014-12-02 02:15:01 -05:00
blitzmann
d7ab709d52 Add EVE version to about box 2014-12-02 01:35:30 -05:00
blitzmann
831478e034 Finish effects for Confessor 2014-12-02 01:15:06 -05:00
blitzmann
d0b5f3ad78 Fixed Confessor Prop mode effects and added Defense / Sharpshooter mode effects 2014-12-02 00:50:02 -05:00
blitzmann
190c1f135f Add slot modifiers to misc column for subsystems 2014-11-30 22:36:52 -05:00
blitzmann
374d6d6d34 Publish other modes to market 2014-11-30 16:59:55 -05:00
blitzmann
edbdaf5631 Add .Check() to tactical mode menu items 2014-11-30 16:56:43 -05:00
blitzmann
23a71e7448 Implement service layer mode setter. Modes now have basic support and testing.
Also decided to have two separate functions that return the mode items as Items or Modes. Returning them as Items makes it easier to check if provided modeID from user database is valid (since we cannot easily map the modeID to create a Mode), returning as Modes allows us to easily use them for setters. There's probably a better way to do this, but w/e
2014-11-30 16:43:15 -05:00
blitzmann
892c5c5b60 Various event binding fixes for context menus. It's still a mess, but it's not as bad of a mess.
(cherry picked from commit 081e32da6f)
2014-11-30 01:19:10 -05:00
blitzmann
081e32da6f Various event binding fixes for context menus. It's still a mess, but it's not as bad of a mess. 2014-11-30 01:14:47 -05:00
blitzmann
7100e8997b Merge branch 'master' into singularity 2014-11-29 21:53:22 -05:00
blitzmann
9a8642e789 Fix more paths 2014-11-29 20:57:44 -05:00
blitzmann
a565abe6f7 Added script to automate json dump, sql convert, and diff prep. Also adds metadata to eve.db 2014-11-29 20:50:34 -05:00
blitzmann
b93b59fe4d Add windows installer generation to dist.py 2014-11-29 20:49:58 -05:00
blitzmann
9782ca3a29 Improvements on distributable generator 2014-11-29 20:49:40 -05:00
blitzmann
f9fd894c9f Rename nighty to dist and fix path in itemDiff 2014-11-29 20:49:27 -05:00
blitzmann
ee8395e8fd Fix paths 2014-11-29 20:49:10 -05:00
blitzmann
7836506444 Move scripts directory 2014-11-29 20:48:58 -05:00
blitzmann
8df7593223 Moved compat.py to new dir utils/ and also added timer class 2014-11-29 20:47:53 -05:00
blitzmann
8351b0fc9d Fix gitignore 2014-11-29 20:46:16 -05:00
blitzmann
88ee1d60be Fix loading of mode, and add some (untested) setting functions 2014-11-29 02:58:43 -05:00
blitzmann
dda1494b90 Added method to check/get modes, and start GUI integration (simple context menu) 2014-11-28 01:23:44 -05:00
blitzmann
f53384c4c2 Preliminary backend support for tactical destroyer modes.
* Modifies fits table to add "mode" column, which contains typeID of mode for fit
* Introduces Mode type, similar to Ship and Module type
* Includes effects for Amarr Tactical Destroyer Propulsion Mode

Still a lot to do: GUI switching, constraints on which ships get modes, etc
2014-11-27 23:23:24 -05:00
blitzmann
d4af877e47 Update to 848581 2014-11-27 23:15:45 -05:00
blitzmann
5242c6df60 Fix #192
If price is not valid, cancel it out. This will force an update.
2014-11-25 23:54:24 -05:00
blitzmann
8c1d14ec4a Add version to title bar 2014-11-21 13:39:14 -05:00
blitzmann
f187caa549 Reduce minimum vertical size 2014-11-20 13:00:57 -05:00
blitzmann
70d52fd0b2 Moved price update info to header 2014-11-20 12:27:32 -05:00
blitzmann
222ee22fe3 Ability to remove Cargo from context menu 2014-11-20 00:45:30 -05:00
blitzmann
76f1f217e1 Implements forced price refresh (resolves #196) 2014-11-20 00:29:53 -05:00
blitzmann
6f42e7c286 Bump dev version 2014-11-18 20:05:25 -05:00
blitzmann
ff55f2817b Fix for collapsible stats panels 2014-11-08 18:17:57 -05:00
Gleb Golubitsky
198ee8d129 Icon column size bumped to 24
Signed-off-by: Gleb Golubitsky <sectoid@gnolltech.org>
2014-11-08 17:33:37 +02:00
Gleb Golubitsky
7db13bd3ba Fixed ChromeTabs not rendering properly in wx 3.0
Signed-off-by: Gleb Golubitsky <sectoid@gnolltech.org>
2014-11-08 17:33:04 +02:00
blitzmann
5be0d4b70e Added version selection logic 2014-11-08 16:45:09 +02:00
blitzmann
a603a4359a Fixed font discrepancy from different wxPython versions. 2014-11-08 16:45:09 +02:00
blitzmann
b4f4024903 Fixed some bugs that blocked startup 2014-11-08 16:38:18 +02:00
blitzmann
df18651b4f Bump wxPython requirements 2014-11-08 16:38:18 +02:00
392 changed files with 4111 additions and 2078 deletions

6
.gitignore vendored
View File

@@ -11,8 +11,12 @@
#Patch files
*.patch
#Personal
/saveddata
saveddata/
#PyCharm
.idea/
#Pyfa file
pyfaFits.html

185
config.py
View File

@@ -1,90 +1,95 @@
import os
import sys
# Load variable overrides specific to distribution type
try:
import configforced
except ImportError:
configforced = None
# Turns on debug mode
debug = False
# Defines if our saveddata will be in pyfa root or not
saveInRoot = False
# Version data
version = "1.6.1"
tag = "Stable"
expansionName = "Phoebe"
expansionVersion = "1.0"
evemonMinVersion = "4081"
# Database version (int ONLY)
# Increment every time we need to flag for user database upgrade/modification
dbversion = 2
pyfaPath = None
savePath = None
staticPath = None
saveDB = None
gameDB = None
def defPaths():
global pyfaPath
global savePath
global staticPath
global saveDB
global gameDB
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", pyfaPath)
if pyfaPath is None:
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:
savePath = getattr(configforced, "savePath", None)
if savePath is None:
savePath = os.path.join(pyfaPath, "saveddata")
else:
savePath = getattr(configforced, "savePath", None)
if savePath is None:
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)
if stderrToFile is True:
if not os.path.exists(savePath):
os.mkdir(savePath)
sys.stderr = open(os.path.join(savePath, "error_log.txt"), "w")
# Same for stdout
stdoutToFile = getattr(configforced, "stdoutToFile", None)
if stdoutToFile is True:
if not os.path.exists(savePath):
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
staticPath = os.path.join(pyfaPath, "staticdata")
# The database where we store all the fits etc
saveDB = os.path.join(savePath, "saveddata.db")
# The database where the static EVE data from the datadump is kept.
# This is not the standard sqlite datadump but a modified version created by eos
# maintenance script
gameDB = os.path.join(staticPath, "eve.db")
## DON'T MODIFY ANYTHING BELOW ##
import eos.config
#Caching modifiers, disable all gamedata caching, its unneeded.
eos.config.gamedataCache = False
# saveddata db location modifier, shouldn't ever need to touch this
eos.config.saveddata_connectionstring = "sqlite:///" + saveDB + "?check_same_thread=False"
eos.config.gamedata_connectionstring = "sqlite:///" + gameDB + "?check_same_thread=False"
import os
import sys
# Load variable overrides specific to distribution type
try:
import configforced
except ImportError:
configforced = None
# Turns on debug mode
debug = False
# Defines if our saveddata will be in pyfa root or not
saveInRoot = False
# Version data
version = "1.12.1"
tag = "git"
expansionName = "Singularity"
expansionVersion = "908326"
evemonMinVersion = "4081"
# Database version (int ONLY)
# Increment every time we need to flag for user database upgrade/modification
dbversion = 7
pyfaPath = None
savePath = None
staticPath = None
saveDB = None
gameDB = None
# TODO: move back to pyfa.py main loop
# We moved it here just to avoid rebuilding windows skeleton for now (any change to pyfa.py needs it)
import logging
logging.basicConfig()
def defPaths():
global pyfaPath
global savePath
global staticPath
global saveDB
global gameDB
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", pyfaPath)
if pyfaPath is None:
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:
savePath = getattr(configforced, "savePath", None)
if savePath is None:
savePath = os.path.join(pyfaPath, "saveddata")
else:
savePath = getattr(configforced, "savePath", None)
if savePath is None:
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)
if stderrToFile is True:
if not os.path.exists(savePath):
os.mkdir(savePath)
sys.stderr = open(os.path.join(savePath, "error_log.txt"), "w")
# Same for stdout
stdoutToFile = getattr(configforced, "stdoutToFile", None)
if stdoutToFile is True:
if not os.path.exists(savePath):
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
staticPath = os.path.join(pyfaPath, "staticdata")
# The database where we store all the fits etc
saveDB = os.path.join(savePath, "saveddata.db")
# The database where the static EVE data from the datadump is kept.
# This is not the standard sqlite datadump but a modified version created by eos
# maintenance script
gameDB = os.path.join(staticPath, "eve.db")
## DON'T MODIFY ANYTHING BELOW ##
import eos.config
#Caching modifiers, disable all gamedata caching, its unneeded.
eos.config.gamedataCache = False
# saveddata db location modifier, shouldn't ever need to touch this
eos.config.saveddata_connectionstring = "sqlite:///" + saveDB + "?check_same_thread=False"
eos.config.gamedata_connectionstring = "sqlite:///" + gameDB + "?check_same_thread=False"

View File

@@ -82,18 +82,25 @@ class CapSimulator(object):
if self.scale:
duration, capNeed = self.scale_activation(duration, capNeed)
if self.stagger:
duration = int(duration/amount)
else:
capNeed *= amount
period = lcm(period, duration)
# set clipSize to infinite if reloads are disabled unless it's
# a cap booster module.
if not self.reload and capNeed > 0:
clipSize = 0
if self.stagger:
if clipSize == 0:
duration = int(duration/amount)
else:
stagger_amount = (duration*clipSize+10000)/(amount*clipSize)
for i in range(1, amount):
heapq.heappush(self.state,
[i*stagger_amount, duration,
capNeed, 0, clipSize])
else:
capNeed *= amount
period = lcm(period, duration)
# period optimization doesn't work when reloads are active.
if clipSize:
disable_period = True

View File

@@ -1,11 +1,11 @@
import os.path
from os.path import realpath, join, dirname, abspath
import sys
debug = False
gamedataCache = True
saveddataCache = True
gamedata_connectionstring = 'sqlite:///' + os.path.expanduser(os.path.join("~", ".pyfa","eve.db"))
gamedata_connectionstring = 'sqlite:///' + unicode(realpath(join(dirname(abspath(__file__)), "..", "staticdata", "eve.db")), sys.getfilesystemencoding())
saveddata_connectionstring = 'sqlite:///:memory:'
#Autodetect path, only change if the autodetection bugs out.
path = os.path.dirname(unicode(__file__, sys.getfilesystemencoding()))
path = dirname(unicode(__file__, sys.getfilesystemencoding()))

View 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):
@@ -65,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, getBoosterFits, getProjectedFits, getTargetResistsList, getTargetResists
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:":
@@ -74,3 +84,4 @@ if config.saveddata_connectionstring == "sqlite:///:memory:":
def rollback():
with sd_lock:
saveddata_session.rollback()

View File

@@ -30,6 +30,7 @@ items_table = Table("invtypes", gamedata_meta,
Column("typeName", String, index=True),
Column("description", String),
Column("raceID", Integer),
Column("factionID", Integer),
Column("volume", Float),
Column("mass", Float),
Column("capacity", Float),

View 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)

View 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")

View 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))

View File

@@ -0,0 +1,8 @@
"""
Migration 5
Simply deletes damage profiles with a blank name. See GH issue #256
"""
def upgrade(saveddata_engine):
saveddata_engine.execute('DELETE FROM damagePatterns WHERE name LIKE ?', ("",))

View File

@@ -0,0 +1,9 @@
"""
Migration 6
Overwrites damage profile 0 to reset bad uniform values (bad values set with bug)
"""
def upgrade(saveddata_engine):
saveddata_engine.execute('DELETE FROM damagePatterns WHERE name LIKE ? OR ID LIKE ?', ("Uniform", "1"))
saveddata_engine.execute('INSERT INTO damagePatterns VALUES (?, ?, ?, ?, ?, ?, ?)', (1, "Uniform", 25, 25, 25, 25, None))

View File

@@ -0,0 +1,24 @@
"""
Migration 7
- Converts Scorpion Ishukone Watch to Scorpion
Mosaic introduced proper skinning system, and Ishukone Scorp
was the only ship which was presented as stand-alone ship in
Pyfa.
"""
CONVERSIONS = {
640: ( # Scorpion
4005, # Scorpion Ishukone Watch
)
}
def upgrade(saveddata_engine):
# Convert ships
for replacement_item, list in CONVERSIONS.iteritems():
for retired_item in list:
saveddata_engine.execute('UPDATE "fits" SET "shipID" = ? WHERE "shipID" = ?', (replacement_item, retired_item))

View File

@@ -0,0 +1,88 @@
"""
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 = {
8529: ( # Large F-S9 Regolith Compact Shield Extender
8409, # Large Subordinate Screen Stabilizer I
),
8419: ( # Large Azeotropic Restrained Shield Extender
8489, # Large Supplemental Barrier Emitter I
),
8517: ( # Medium F-S9 Regolith Compact Shield Extender
8397, # Medium Subordinate Screen Stabilizer I
),
8433: ( # Medium Azeotropic Restrained Shield Extender
8477, # Medium Supplemental Barrier Emitter I
),
20627: ( # Small 'Trapper' Shield Extender
8437, # Micro Azeotropic Ward Salubrity I
8505, # Micro F-S9 Regolith Shield Induction
3849, # Micro Shield Extender I
3851, # Micro Shield Extender II
8387, # Micro Subordinate Screen Stabilizer I
8465, # Micro Supplemental Barrier Emitter I
),
8521: ( # Small F-S9 Regolith Compact Shield Extender
8401, # Small Subordinate Screen Stabilizer I
),
8427: ( # Small Azeotropic Restrained Shield Extender
8481, # Small Supplemental Barrier Emitter I
),
11343: ( # 100mm Crystalline Carbonide Restrained Plates
11345, # 100mm Reinforced Nanofiber Plates I
),
11341: ( # 100mm Rolled Tungsten Compact Plates
11339, # 100mm Reinforced Titanium Plates I
),
11327: ( # 1600mm Crystalline Carbonide Restrained Plates
11329, # 1600mm Reinforced Nanofiber Plates I
),
11325: ( # 1600mm Rolled Tungsten Compact Plates
11323, # 1600mm Reinforced Titanium Plates I
),
11351: ( # 200mm Crystalline Carbonide Restrained Plates
11353, # 200mm Reinforced Nanofiber Plates I
),
11349: ( # 200mm Rolled Tungsten Compact Plates
11347, # 200mm Reinforced Titanium Plates I
),
11311: ( # 400mm Crystalline Carbonide Restrained Plates
11313, # 400mm Reinforced Nanofiber Plates I
),
11309: ( # 400mm Rolled Tungsten Compact Plates
11307, # 400mm Reinforced Titanium Plates I
),
23791: ( # 'Citadella' 100mm Steel Plates
11335, # 50mm Reinforced Crystalline Carbonide Plates I
11337, # 50mm Reinforced Nanofiber Plates I
11333, # 50mm Reinforced Rolled Tungsten Plates I
11291, # 50mm Reinforced Steel Plates I
20343, # 50mm Reinforced Steel Plates II
11331, # 50mm Reinforced Titanium Plates I
),
11319: ( # 800mm Crystalline Carbonide Restrained Plates
11321, # 800mm Reinforced Nanofiber Plates I
),
11317: ( # 800mm Rolled Tungsten Compact Plates
11315, # 800mm Reinforced Titanium Plates 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))

View File

@@ -40,7 +40,9 @@ fits_table = Table("fits", saveddata_meta,
Column("characterID", ForeignKey("characters.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("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),

View File

@@ -267,6 +267,11 @@ def getBoosterFits(ownerID=None, where=None, eager=None):
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.
@@ -308,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:

View File

@@ -2,7 +2,7 @@
#
# Used by:
# Modules from group: Missile Launcher Bomb (2 of 2)
# Modules from group: Shield Extender (37 of 37)
# Modules from group: Shield Extender (25 of 25)
type = "passive"
def handler(fit, module, context):
fit.ship.increaseItemAttr("signatureRadius", module.getModifiedItemAttr("signatureRadiusAdd"))

View File

@@ -1,9 +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",

View File

@@ -1,7 +1,7 @@
# ammoInfluenceCapNeed
#
# Used by:
# Items from category: Charge (458 of 829)
# Items from category: Charge (458 of 831)
type = "passive"
def handler(fit, module, context):
# Dirty hack to work around cap charges setting cap booster

View File

@@ -1,7 +1,7 @@
# ammoInfluenceRange
#
# Used by:
# Items from category: Charge (559 of 829)
# Items from category: Charge (559 of 831)
type = "passive"
def handler(fit, module, context):
module.multiplyItemAttr("maxRange", module.getModifiedChargeAttr("weaponRangeMultiplier"))

View File

@@ -1,7 +1,7 @@
# armorHPBonusAdd
#
# Used by:
# Modules from group: Armor Reinforcer (57 of 57)
# Modules from group: Armor Reinforcer (41 of 41)
type = "passive"
def handler(fit, module, context):
fit.ship.increaseItemAttr("armorHP", module.getModifiedItemAttr("armorHPBonusAdd"))

View File

@@ -1,7 +1,8 @@
# armorReinforcerMassAdd
#
# Used by:
# Modules from group: Armor Reinforcer (57 of 57)
# Modules from group: Armor Reinforcer (41 of 41)
# Modules from group: Entosis Link (2 of 2)
type = "passive"
def handler(fit, module, context):
fit.ship.increaseItemAttr("mass", module.getModifiedItemAttr("massAddition"))

View File

@@ -2,7 +2,6 @@
#
# Used by:
# Ship: Scorpion
# Ship: Scorpion Ishukone Watch
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Caldari Battleship").level

View File

@@ -2,7 +2,6 @@
#
# Used by:
# Ship: Scorpion
# Ship: Scorpion Ishukone Watch
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Caldari Battleship").level

View File

@@ -2,7 +2,6 @@
#
# Used by:
# Ship: Scorpion
# Ship: Scorpion Ishukone Watch
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Caldari Battleship").level

View File

@@ -2,7 +2,6 @@
#
# Used by:
# Ship: Scorpion
# Ship: Scorpion Ishukone Watch
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Caldari Battleship").level

View File

@@ -2,9 +2,9 @@
#
# Used by:
# Modules from group: Capacitor Flux Coil (6 of 6)
# Modules from group: Capacitor Power Relay (26 of 26)
# Modules from group: Power Diagnostic System (31 of 31)
# Modules from group: Propulsion Module (107 of 107)
# Modules from group: Capacitor Power Relay (20 of 20)
# Modules from group: Power Diagnostic System (23 of 23)
# Modules from group: Propulsion Module (114 of 114)
# Modules from group: Reactor Control Unit (22 of 22)
# Modules from group: Shield Flux Coil (11 of 11)
# Modules from group: Shield Power Relay (11 of 11)

View File

@@ -1,9 +1,9 @@
# cargoCapacityMultiply
#
# Used by:
# Modules from group: Expanded Cargohold (13 of 13)
# Modules from group: Overdrive Injector System (14 of 14)
# Modules from group: Reinforced Bulkhead (12 of 12)
# Modules from group: Expanded Cargohold (7 of 7)
# Modules from group: Overdrive Injector System (7 of 7)
# Modules from group: Reinforced Bulkhead (8 of 8)
type = "passive"
def handler(fit, module, context):
fit.ship.multiplyItemAttr("capacity", module.getModifiedItemAttr("cargoCapacityMultiplier"))

View File

@@ -6,6 +6,7 @@ gangBonus = "commandBonusTD"
gangBoost = "ewarStrTD"
type = "active", "gang"
def handler(fit, module, context):
if "gang" not in context: return
for bonus in ("maxRangeBonus", "falloffBonus", "trackingSpeedBonus"):
fit.modules.filteredItemBoost(lambda mod: lambda mod: mod.item.requiresSkill("Weapon Disruption"),
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Weapon Disruption"),
bonus, module.getModifiedItemAttr("commandBonusTD"))

View File

@@ -1,9 +1,9 @@
# commandshipMultiRelayEffect
#
# Used by:
# Ships from group: Capital Industrial Ship (2 of 2)
# Ships from group: Command Ship (8 of 8)
# Ships from group: Industrial Command Ship (2 of 2)
# Ship: Orca
# Ship: Rorqual
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemIncrease(lambda mod: mod.item.group.name == "Gang Coordinator",

View File

@@ -3,6 +3,7 @@
# Used by:
# Ship: Astero
# Ship: Prospect
# Ship: Victorieux Luxury Yacht
type = "passive"
runTime = "early"
def handler(fit, ship, context):

View File

@@ -1,7 +1,7 @@
# drawbackArmorHP
#
# Used by:
# Modules from group: Rig Navigation (48 of 68)
# Modules from group: Rig Navigation (48 of 64)
type = "passive"
def handler(fit, module, context):
fit.ship.boostItemAttr("armorHP", module.getModifiedItemAttr("drawback"))

View File

@@ -2,7 +2,6 @@
#
# Used by:
# Modules from group: Rig Drones (64 of 64)
# Modules named like: Optimizer (16 of 16)
type = "passive"
def handler(fit, module, context):
fit.ship.boostItemAttr("cpuOutput", module.getModifiedItemAttr("drawback"))

View File

@@ -2,6 +2,7 @@
#
# Used by:
# Modules from group: Rig Shield (72 of 72)
# Modules named like: Optimizer (16 of 16)
type = "passive"
def handler(fit, module, context):
fit.ship.boostItemAttr("signatureRadius", module.getModifiedItemAttr("drawback"), stackingPenalties = True)

View File

@@ -1,7 +1,7 @@
# drawbackWarpSpeed
#
# Used by:
# Modules named like: Higgs Anchor I (4 of 4)
# Modules from group: Rig Anchor (4 of 4)
type = "passive"
def handler(fit, module, context):
fit.ship.boostItemAttr("warpSpeedMultiplier", module.getModifiedItemAttr("drawback"), stackingPenalties=True)

View File

@@ -1,7 +1,7 @@
# eliteBargeBonusIceHarvestingCycleTimeBarge3
#
# Used by:
# Ships from group: Exhumer (4 of 4)
# Ships from group: Exhumer (3 of 3)
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Exhumers").level

View File

@@ -1,7 +1,7 @@
# eliteBargeBonusMiningDurationBarge2
#
# Used by:
# Ships from group: Exhumer (4 of 4)
# Ships from group: Exhumer (3 of 3)
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Exhumers").level

View File

@@ -1,7 +1,7 @@
# eliteBargeShieldResistance1
#
# Used by:
# Ships from group: Exhumer (4 of 4)
# Ships from group: Exhumer (3 of 3)
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Exhumers").level

View File

@@ -1,7 +1,7 @@
# eliteBonusHeavyInterdictorsWarpDisruptFieldGeneratorWarpScrambleRange2
#
# Used by:
# Ships from group: Heavy Interdiction Cruiser (4 of 4)
# Ships from group: Heavy Interdiction Cruiser (4 of 5)
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Heavy Interdiction Cruisers").level

View File

@@ -1,7 +1,7 @@
# eliteBonusMaraudersCruiseAndTorpedoDamageRole1
#
# Used by:
# Ships named like: Golem (4 of 4)
# Ship: Golem
type = "passive"
def handler(fit, ship, context):
damageTypes = ("em", "explosive", "kinetic", "thermal")

View File

@@ -1,7 +1,7 @@
# eliteBonusMaraudersHeavyMissileDamageEMRole1
#
# Used by:
# Ships named like: Golem (4 of 4)
# Ship: Golem
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Missiles"),

View File

@@ -1,7 +1,7 @@
# eliteBonusMaraudersHeavyMissileDamageExpRole1
#
# Used by:
# Ships named like: Golem (4 of 4)
# Ship: Golem
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Missiles"),

View File

@@ -1,7 +1,7 @@
# eliteBonusMaraudersHeavyMissileDamageKinRole1
#
# Used by:
# Ships named like: Golem (4 of 4)
# Ship: Golem
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Missiles"),

View File

@@ -1,7 +1,7 @@
# eliteBonusMaraudersHeavyMissileDamageThermRole1
#
# Used by:
# Ships named like: Golem (4 of 4)
# Ship: Golem
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Heavy Missiles"),

View File

@@ -1,7 +1,8 @@
# eliteBonusMarauderShieldBonus2a
#
# Used by:
# Ships from group: Marauder (8 of 16)
# Ship: Golem
# Ship: Vargur
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Marauders").level

View File

@@ -1,7 +1,7 @@
# eliteBonusViolatorsEwTargetPainting1
#
# Used by:
# Ships named like: Golem (4 of 4)
# Ship: Golem
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Marauders").level

View File

@@ -1,7 +1,7 @@
# eliteBonusViolatorsLargeEnergyTurretDamage1
#
# Used by:
# Ships named like: Paladin (4 of 4)
# Ship: Paladin
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Marauders").level

View File

@@ -1,7 +1,7 @@
# eliteBonusViolatorsLargeEnergyTurretDamageRole1
#
# Used by:
# Ships named like: Paladin (4 of 4)
# Ship: Paladin
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Large Energy Turret"),

View File

@@ -1,7 +1,7 @@
# eliteBonusViolatorsLargeHybridTurretDamageRole1
#
# Used by:
# Ships named like: Kronos (4 of 4)
# Ship: Kronos
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Large Hybrid Turret"),

View File

@@ -1,7 +1,7 @@
# eliteBonusViolatorsLargeHybridTurretTracking1
#
# Used by:
# Ships named like: Kronos (4 of 4)
# Ship: Kronos
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Marauders").level

View File

@@ -1,7 +1,7 @@
# eliteBonusViolatorsLargeProjectileTurretDamageRole1
#
# Used by:
# Ships named like: Vargur (4 of 4)
# Ship: Vargur
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Large Projectile Turret"),

View File

@@ -1,7 +1,7 @@
# eliteBonusViolatorsLargeProjectileTurretTracking1
#
# Used by:
# Ships named like: Vargur (4 of 4)
# Ship: Vargur
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Marauders").level

View File

@@ -1,7 +1,8 @@
# eliteBonusViolatorsRepairSystemsArmorDamageAmount2
#
# Used by:
# Ships from group: Marauder (8 of 16)
# Ship: Kronos
# Ship: Paladin
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Marauders").level

View File

@@ -1,7 +1,7 @@
# eliteBonusViolatorsTractorBeamMaxRangeRole2
#
# Used by:
# Ships from group: Marauder (16 of 16)
# Ships from group: Marauder (4 of 4)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Tractor Beam",

View File

@@ -1,7 +1,7 @@
# eliteBonusViolatorsTractorBeamMaxTractorVelocityRole3
#
# Used by:
# Ships from group: Marauder (16 of 16)
# Ships from group: Marauder (4 of 4)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Tractor Beam",

View File

@@ -1,10 +0,0 @@
# eliteReconBonusAssaultLauncherROF1
#
# Used by:
# Ship: Huginn
# Ship: Lachesis
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Recon Ships").level
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Missile Launcher Rapid Light",
"speed", ship.getModifiedItemAttr("eliteBonusReconShip1") * level)

View File

@@ -1,9 +0,0 @@
# eliteReconBonusHeavyAssaultLauncherROF1
#
# Used by:
# Ship: Huginn
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Recon Ships").level
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Missile Launcher Heavy Assault",
"speed", ship.getModifiedItemAttr("eliteBonusReconShip1") * level)

View File

@@ -1,10 +0,0 @@
# eliteReconBonusHeavyLauncherROF1
#
# Used by:
# Ship: Huginn
# Ship: Lachesis
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Recon Ships").level
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Missile Launcher Heavy",
"speed", ship.getModifiedItemAttr("eliteBonusReconShip1") * level)

View File

@@ -0,0 +1,9 @@
# eliteReconBonusMHTOptimalRange1
#
# Used by:
# Ship: Lachesis
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Recon Ships").level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Medium Hybrid Turret"),
"maxRange", ship.getModifiedItemAttr("eliteBonusReconShip1") * level)

View File

@@ -0,0 +1,9 @@
# eliteReconBonusMPTdamage1
#
# Used by:
# Ship: Huginn
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Recon Ships").level
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Medium Projectile Turret"),
"damageMultiplier", ship.getModifiedItemAttr("eliteBonusReconShip1") * level)

View File

@@ -0,0 +1,9 @@
# eliteReconBonusNeutRange3
#
# Used by:
# Ship: Pilgrim
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Recon Ships").level
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Destabilizer",
"energyDestabilizationRange", ship.getModifiedItemAttr("eliteBonusReconShip3") * level)

View File

@@ -0,0 +1,9 @@
# eliteReconBonusVampRange3
#
# Used by:
# Ship: Pilgrim
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Recon Ships").level
fit.modules.filteredItemBoost(lambda mod: mod.item.group.name == "Energy Vampire",
"powerTransferRange", ship.getModifiedItemAttr("eliteBonusReconShip3") * level)

View File

@@ -0,0 +1,12 @@
# entosisDurationMultiply
#
# Used by:
# Ships from group: Carrier (4 of 4)
# Ships from group: Dreadnought (4 of 4)
# Ships from group: Supercarrier (5 of 5)
# Ships from group: Titan (4 of 4)
# Ship: Rorqual
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Infomorph Psychology"),
"duration", ship.getModifiedItemAttr("entosisDurationMultiplier") or 1)

View File

@@ -0,0 +1,7 @@
# entosisLink
#
# Used by:
# Modules from group: Entosis Link (2 of 2)
type = "active"
def handler(fit, module, context):
pass

View File

@@ -1,9 +1,9 @@
# evasiveManeuveringAgilityBonusPostPercentAgilityShip
#
# Used by:
# Modules from group: Rig Anchor (4 of 4)
# Implants named like: Eifyr and Co. 'Rogue' Evasive Maneuvering EM (6 of 6)
# Implants named like: grade Nomad (10 of 12)
# Modules named like: Higgs Anchor I (4 of 4)
# Modules named like: Low Friction Nozzle Joints (8 of 8)
# Implant: Genolution Core Augmentation CA-4
# Skill: Evasive Maneuvering

View File

@@ -0,0 +1,8 @@
# freighterAgilityBonus2O2
#
# Used by:
# Ship: Bowhead
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("ORE Freighter").level
fit.ship.boostItemAttr("shipMaintenanceBayCapacity", ship.getModifiedItemAttr("freighterBonusO1")*level)

View File

@@ -0,0 +1,9 @@
# freighterSMACapacityBonusO1
#
# Used by:
# Ship: Bowhead
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("ORE Freighter").level
fit.ship.boostItemAttr("agility", ship.getModifiedItemAttr("freighterBonusO2")*level,
stackingPenalties = True)

View File

@@ -1,7 +1,7 @@
# iceHarvestCycleTimeModulesRequiringIceHarvestingOnline
#
# Used by:
# Variations of module: Ice Harvester Upgrade I (6 of 6)
# Variations of module: Ice Harvester Upgrade I (5 of 5)
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Ice Harvesting"),

View File

@@ -1,9 +1,8 @@
# iceHarvesterCapacitorNeedMultiplier
#
# Used by:
# Ships from group: Exhumer (3 of 4)
# Ship: Procurer
# Ship: Retriever
# Variations of ship: Procurer (2 of 2)
# Variations of ship: Retriever (2 of 2)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Ice Harvesting"),

View File

@@ -1,9 +1,8 @@
# iceHarvesterDurationMultiplier
#
# Used by:
# Ships from group: Exhumer (3 of 4)
# Ship: Procurer
# Ship: Retriever
# Variations of ship: Procurer (2 of 2)
# Variations of ship: Retriever (2 of 2)
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Ice Harvesting"),

View File

@@ -1,7 +1,7 @@
# iceMinerCpuUsagePercent
#
# Used by:
# Variations of module: Ice Harvester Upgrade I (6 of 6)
# Variations of module: Ice Harvester Upgrade I (5 of 5)
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Ice Harvesting"),

View File

@@ -1,7 +1,7 @@
# increaseSignatureRadiusOnline
#
# Used by:
# Modules from group: Inertia Stabilizer (12 of 12)
# Modules from group: Inertial Stabilizer (7 of 7)
type = "passive"
def handler(fit, module, context):
fit.ship.boostItemAttr("signatureRadius", module.getModifiedItemAttr("signatureRadiusBonus"))

View File

@@ -1,7 +1,7 @@
# Interceptor2WarpScrambleRange
#
# Used by:
# Ships from group: Interceptor (5 of 9)
# Ships from group: Interceptor (5 of 10)
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Interceptors").level

View File

@@ -1,7 +1,7 @@
# interceptorMWDSignatureRadiusBonus
#
# Used by:
# Ships from group: Interceptor (9 of 9)
# Ships from group: Interceptor (9 of 10)
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Interceptors").level

View File

@@ -1,7 +1,7 @@
# massReductionBonusPassive
#
# Used by:
# Modules named like: Higgs Anchor I (4 of 4)
# Modules from group: Rig Anchor (4 of 4)
type = "passive"
def handler(fit, module, context):
fit.ship.boostItemAttr("mass", module.getModifiedItemAttr("massBonusPercentage"), stackingPenalties=True)

View File

@@ -1,7 +1,7 @@
# minerCpuUsageMultiplyPercent2
#
# Used by:
# Variations of module: Mining Laser Upgrade I (6 of 6)
# Variations of module: Mining Laser Upgrade I (5 of 5)
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining"),

View File

@@ -4,12 +4,12 @@
# Ships from group: Covert Ops (5 of 5)
# Ships named like: Stratios (2 of 2)
# Subsystems named like: Electronics Emergent Locus Analyzer (4 of 4)
# Variations of ship: Heron (3 of 3)
# Variations of ship: Imicus (3 of 3)
# Variations of ship: Magnate (4 of 6)
# Variations of ship: Probe (3 of 3)
# Ship: Astero
# Ship: Heron
# Ship: Imicus
# Ship: Magnate
# Ship: Nestor
# Ship: Probe
type = "passive"
def handler(fit, container, context):
level = container.level if "skill" in context else 1

View File

@@ -1,7 +1,7 @@
# miningDirectorBonusCommandBonusEffective
#
# Used by:
# Ships from group: Capital Industrial Ship (2 of 2)
# Ship: Rorqual
type = "passive"
def handler(fit, ship, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining Director"),

View File

@@ -2,7 +2,7 @@
#
# Used by:
# Modules from group: Frequency Mining Laser (3 of 3)
# Modules from group: Mining Laser (17 of 17)
# Modules from group: Mining Laser (12 of 12)
# Modules from group: Strip Miner (5 of 5)
type = 'active'
def handler(fit, module, context):

View File

@@ -1,10 +1,9 @@
# miningYieldMultiplyPassive
#
# Used by:
# Ships from group: Exhumer (3 of 4)
# Variations of ship: Procurer (2 of 2)
# Variations of ship: Retriever (2 of 2)
# Variations of ship: Venture (2 of 2)
# Ship: Procurer
# Ship: Retriever
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemMultiply(lambda mod: mod.item.requiresSkill("Mining"),

View File

@@ -1,7 +1,7 @@
# miningYieldMultiplyPercent
#
# Used by:
# Variations of module: Mining Laser Upgrade I (6 of 6)
# Variations of module: Mining Laser Upgrade I (5 of 5)
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemBoost(lambda mod: mod.item.requiresSkill("Mining"),

View File

@@ -2,6 +2,7 @@
#
# Used by:
# Ship: Bellicose
# Ship: Rapier
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Minmatar Cruiser").level

View File

@@ -2,7 +2,6 @@
#
# Used by:
# Ship: Huginn
# Ship: Rapier
type = "passive"
def handler(fit, ship, context):
level = fit.character.getSkill("Minmatar Cruiser").level

View File

@@ -0,0 +1,4 @@
type = "passive"
def handler(fit, container, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"aoeCloudSize", container.getModifiedItemAttr("aoeCloudSizeBonus"))

View File

@@ -0,0 +1,4 @@
type = "passive"
def handler(fit, container, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"aoeVelocity", container.getModifiedItemAttr("aoeVelocityBonus"))

View File

@@ -0,0 +1,5 @@
type = "passive"
def handler(fit, container, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"explosionDelay", container.getModifiedItemAttr("explosionDelayBonus"),
stackingPenalties=True)

View File

@@ -0,0 +1,11 @@
type = "active"
def handler(fit, container, context):
for srcAttr, tgtAttr, penalize in (
("aoeCloudSizeBonus", "aoeCloudSize", False),
("aoeVelocityBonus", "aoeVelocity", False),
("missileVelocityBonus", "maxVelocity", True),
("explosionDelayBonus", "explosionDelay", True),
):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
tgtAttr, container.getModifiedItemAttr(srcAttr),
stackingPenalties=penalize)

View File

@@ -5,4 +5,4 @@
type = "passive"
def handler(fit, container, context):
fit.modules.filteredChargeMultiply(lambda mod: mod.charge.requiresSkill("Defender Missiles"),
"maxVelocity", container.getModifiedItemAttr("missileVelocityBonus"))
"maxVelocity", container.getModifiedItemAttr("missileVelocityBonus"))

View File

@@ -0,0 +1,5 @@
type = "passive"
def handler(fit, container, context):
fit.modules.filteredChargeBoost(lambda mod: mod.charge.requiresSkill("Missile Launcher Operation"),
"maxVelocity", container.getModifiedItemAttr("missileVelocityBonus"),
stackingPenalties=True)

View File

@@ -0,0 +1,12 @@
# modeAgilityPostDiv
#
# Used by:
# Modules named like: Propulsion Mode (4 of 4)
type = "passive"
def handler(fit, module, context):
fit.ship.multiplyItemAttr(
"agility",
1 / module.getModifiedItemAttr("modeAgilityPostDiv"),
stackingPenalties=True,
penaltyGroup="postDiv"
)

View File

@@ -0,0 +1,7 @@
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill("Repair Systems"),
"duration",
1 / module.getModifiedItemAttr("modeArmorRepDurationPostDiv")
)

View File

@@ -0,0 +1,18 @@
# modeArmorResonancePostDiv
#
# Used by:
# Modules named like: Defense Mode (3 of 4)
type = "passive"
def handler(fit, module, context):
for srcResType, tgtResType in (
("Em", "Em"),
("Explosive", "Explosive"),
("Kinetic", "Kinetic"),
("Thermic", "Thermal")
):
fit.ship.multiplyItemAttr(
"armor{0}DamageResonance".format(tgtResType),
1 / module.getModifiedItemAttr("mode{0}ResistancePostDiv".format(srcResType)),
stackingPenalties=True,
penaltyGroup="postDiv"
)

View File

@@ -0,0 +1,16 @@
# modeHullResonancePostDiv
#
# Used by:
# Module: Hecate Defense Mode
type = "passive"
def handler(fit, module, context):
for srcResType, tgtResType in (
("Em", "em"),
("Explosive", "explosive"),
("Kinetic", "kinetic"),
("Thermic", "thermal")
):
fit.ship.multiplyItemAttr(
"{0}DamageResonance".format(tgtResType),
1 / module.getModifiedItemAttr("mode{0}ResistancePostDiv".format(srcResType))
)

View File

@@ -0,0 +1,13 @@
# modeMWDBoostPostDiv
#
# Used by:
# Module: Hecate Propulsion Mode
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill("High Speed Maneuvering"),
"speedFactor",
1 / module.getModifiedItemAttr("modeMWDVelocityPostDiv"),
stackingPenalties=True,
penaltyGroup="postDiv"
)

View File

@@ -0,0 +1,11 @@
# modeMWDCapPostDiv
#
# Used by:
# Module: Hecate Propulsion Mode
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill("High Speed Maneuvering"),
"capacitorNeed",
1 / module.getModifiedItemAttr("modeMWDCapPostDiv")
)

View File

@@ -0,0 +1,13 @@
# modeMWDSigRadiusPostDiv
#
# Used by:
# Module: Svipul Defense Mode
type = "passive"
def handler(fit, module, context):
fit.modules.filteredItemMultiply(
lambda mod: mod.item.requiresSkill("High Speed Maneuvering"),
"signatureRadiusBonus",
1 / module.getModifiedItemAttr("modeMWDSigPenaltyPostDiv"),
stackingPenalties=True,
penaltyGroup="postDiv"
)

View File

@@ -0,0 +1,19 @@
# modeShieldResonancePostDiv
#
# Used by:
# Module: Jackdaw Defense Mode
# Module: Svipul Defense Mode
type = "passive"
def handler(fit, module, context):
for srcResType, tgtResType in (
("Em", "Em"),
("Explosive", "Explosive"),
("Kinetic", "Kinetic"),
("Thermic", "Thermal")
):
fit.ship.multiplyItemAttr(
"shield{0}DamageResonance".format(tgtResType),
1 / module.getModifiedItemAttr("mode{0}ResistancePostDiv".format(srcResType)),
stackingPenalties=True,
penaltyGroup="postDiv"
)

View File

@@ -0,0 +1,9 @@
# modeSigRadiusPostDiv
#
# Used by:
# Module: Confessor Defense Mode
# Module: Jackdaw Defense Mode
type = "passive"
def handler(fit, module, context):
fit.ship.multiplyItemAttr("signatureRadius", 1 / module.getModifiedItemAttr("modeSignatureRadiusPostDiv"),
stackingPenalties=True, penaltyGroup="postDiv")

View File

@@ -0,0 +1,12 @@
# modeVelocityPostDiv
#
# Used by:
# Modules named like: Propulsion Mode (3 of 4)
type = "passive"
def handler(fit, module, context):
fit.ship.multiplyItemAttr(
"maxVelocity",
1 / module.getModifiedItemAttr("modeVelocityPostDiv"),
stackingPenalties=True,
penaltyGroup="postDiv"
)

View File

@@ -1,7 +1,7 @@
# modifyMaxVelocityOfShipPassive
#
# Used by:
# Modules from group: Expanded Cargohold (13 of 13)
# Modules from group: Expanded Cargohold (7 of 7)
type = "passive"
def handler(fit, module, context):
fit.ship.multiplyItemAttr("maxVelocity", module.getModifiedItemAttr("maxVelocityBonus"),

View File

@@ -2,9 +2,9 @@
#
# Used by:
# Modules from group: Capacitor Flux Coil (6 of 6)
# Modules from group: Capacitor Power Relay (26 of 26)
# Modules from group: Capacitor Recharger (25 of 25)
# Modules from group: Power Diagnostic System (31 of 31)
# Modules from group: Capacitor Power Relay (20 of 20)
# Modules from group: Capacitor Recharger (18 of 18)
# Modules from group: Power Diagnostic System (23 of 23)
# Modules from group: Reactor Control Unit (22 of 22)
# Modules from group: Shield Flux Coil (11 of 11)
# Modules from group: Shield Power Relay (11 of 11)

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